.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_08080974 sub_08080974: @ 0x08080974 push {r4, lr} adds r3, r0, #0 adds r4, r1, #0 ldr r1, _0808098C @ =gRoomControls ldrh r2, [r1, #6] adds r0, r2, #0 adds r0, #0x78 cmp r3, r0 bhi _08080990 strh r2, [r1, #0xa] b _080809A2 .align 2, 0 _0808098C: .4byte gRoomControls _08080990: ldrh r0, [r1, #0x1e] adds r2, r2, r0 adds r0, r2, #0 subs r0, #0x78 cmp r3, r0 bhs _0808099E adds r0, r3, #0 _0808099E: subs r0, #0x78 strh r0, [r1, #0xa] _080809A2: ldrh r2, [r1, #8] adds r0, r2, #0 adds r0, #0x50 cmp r4, r0 bhi _080809B0 strh r2, [r1, #0xc] b _080809C2 _080809B0: ldrh r0, [r1, #0x20] adds r2, r2, r0 adds r0, r2, #0 subs r0, #0x50 cmp r4, r0 bhs _080809BE adds r0, r4, #0 _080809BE: subs r0, #0x50 strh r0, [r1, #0xc] _080809C2: bl sub_080809D4 ldr r1, _080809D0 @ =gUnk_02000070 movs r0, #1 strb r0, [r1] pop {r4, pc} .align 2, 0 _080809D0: .4byte gUnk_02000070 thumb_func_start sub_080809D4 sub_080809D4: @ 0x080809D4 push {r4, lr} ldr r2, _080809F4 @ =gRoomControls ldrb r0, [r2, #0xf] movs r1, #0xfb ands r1, r0 strb r1, [r2, #0xf] ldr r4, [r2, #0x30] movs r0, #0x2e ldrsh r3, [r4, r0] ldrh r1, [r2, #6] adds r0, r1, #0 adds r0, #0x78 cmp r3, r0 bgt _080809F8 strh r1, [r2, #0xa] b _08080A0A .align 2, 0 _080809F4: .4byte gRoomControls _080809F8: ldrh r0, [r2, #0x1e] adds r1, r1, r0 adds r0, r1, #0 subs r0, #0x78 cmp r3, r0 bge _08080A06 ldrh r0, [r4, #0x2e] _08080A06: subs r0, #0x78 strh r0, [r2, #0xa] _08080A0A: ldr r4, [r2, #0x30] movs r0, #0x32 ldrsh r3, [r4, r0] ldrh r1, [r2, #8] adds r0, r1, #0 adds r0, #0x50 cmp r3, r0 bgt _08080A1E strh r1, [r2, #0xc] b _08080A30 _08080A1E: ldrh r0, [r2, #0x20] adds r1, r1, r0 adds r0, r1, #0 subs r0, #0x50 cmp r3, r0 bge _08080A2C ldrh r0, [r4, #0x32] _08080A2C: subs r0, #0x50 strh r0, [r2, #0xc] _08080A30: bl sub_08080BC4 ldr r1, _08080A3C @ =gUnk_02000070 movs r0, #1 strb r0, [r1] pop {r4, pc} .align 2, 0 _08080A3C: .4byte gUnk_02000070 thumb_func_start sub_08080A40 sub_08080A40: @ 0x08080A40 push {r4, r5, r6, r7, lr} ldr r7, _08080A70 @ =gRoomControls ldr r1, [r7, #0x30] ldr r0, _08080A74 @ =gLinkEntity adds r2, r7, #0 cmp r1, r0 beq _08080A50 b _08080B5C _08080A50: ldr r0, _08080A78 @ =gLinkState ldrb r0, [r0, #2] cmp r0, #0 beq _08080A5A b _08080B5C _08080A5A: ldrb r0, [r1, #0xc] subs r0, #1 cmp r0, #0x1c bls _08080A64 b _08080B5C _08080A64: lsls r0, r0, #2 ldr r1, _08080A7C @ =_08080A80 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08080A70: .4byte gRoomControls _08080A74: .4byte gLinkEntity _08080A78: .4byte gLinkState _08080A7C: .4byte _08080A80 _08080A80: @ jump table .4byte _08080AFA @ case 0 .4byte _08080B5C @ case 1 .4byte _08080B5C @ case 2 .4byte _08080B5C @ case 3 .4byte _08080B5C @ case 4 .4byte _08080B5C @ case 5 .4byte _08080B5C @ case 6 .4byte _08080B5C @ case 7 .4byte _08080AFA @ case 8 .4byte _08080B5C @ case 9 .4byte _08080B5C @ case 10 .4byte _08080B5C @ case 11 .4byte _08080B5C @ case 12 .4byte _08080B5C @ case 13 .4byte _08080AF4 @ case 14 .4byte _08080B5C @ case 15 .4byte _08080B5C @ case 16 .4byte _08080B5C @ case 17 .4byte _08080B5C @ case 18 .4byte _08080B5C @ case 19 .4byte _08080B5C @ case 20 .4byte _08080B5C @ case 21 .4byte _08080B5C @ case 22 .4byte _08080AFA @ case 23 .4byte _08080B5C @ case 24 .4byte _08080B5C @ case 25 .4byte _08080B5C @ case 26 .4byte _08080B5C @ case 27 .4byte _08080AFA @ case 28 _08080AF4: ldrb r0, [r2, #4] cmp r0, #0x48 beq _08080B5C _08080AFA: ldr r3, [r7, #0x30] movs r0, #0x32 ldrsh r1, [r3, r0] ldrh r0, [r7, #8] subs r6, r1, r0 movs r0, #0x2e ldrsh r1, [r3, r0] ldrh r0, [r7, #6] subs r5, r1, r0 asrs r0, r5, #4 movs r2, #0x3f ands r0, r2 asrs r1, r6, #4 ands r1, r2 lsls r1, r1, #6 orrs r0, r1 adds r3, #0x38 ldrb r1, [r3] bl sub_080002C8 adds r4, r0, #0 ldr r0, [r7, #0x30] adds r0, #0x38 ldrb r2, [r0] adds r0, r5, #0 adds r1, r6, #0 bl sub_080002A8 ldr r1, _08080B48 @ =gUnk_030010A0 strh r0, [r1, #0xa] cmp r4, #0x3f beq _08080B50 cmp r4, #0x3f bhi _08080B4C cmp r4, #0x29 bhi _08080B5C cmp r4, #0x28 blo _08080B5C b _08080B50 .align 2, 0 _08080B48: .4byte gUnk_030010A0 _08080B4C: cmp r4, #0xf1 bne _08080B5C _08080B50: adds r0, r5, #0 adds r1, r6, #0 movs r2, #0xff movs r3, #0xa bl sub_080806BC _08080B5C: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08080B60 sub_08080B60: @ 0x08080B60 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} ldr r1, _08080B90 @ =0x00005004 adds r4, r0, r1 ldr r2, _08080B94 @ =gUnk_080B37A0 mov r8, r2 movs r3, #0 ldr r1, _08080B98 @ =0x00003FFF mov ip, r1 ldr r7, _08080B9C @ =gUnk_080B7910 ldr r2, _08080BA0 @ =0x0000B004 adds r1, r0, r2 adds r2, r0, #4 ldr r6, _08080BA4 @ =0xFFFFC000 ldr r5, _08080BA8 @ =0x00000FFF _08080B80: ldrh r0, [r2] cmp r0, ip bhi _08080BAC lsls r0, r0, #1 adds r0, r0, r4 ldrh r0, [r0] add r0, r8 b _08080BB0 .align 2, 0 _08080B90: .4byte 0x00005004 _08080B94: .4byte gUnk_080B37A0 _08080B98: .4byte 0x00003FFF _08080B9C: .4byte gUnk_080B7910 _08080BA0: .4byte 0x0000B004 _08080BA4: .4byte 0xFFFFC000 _08080BA8: .4byte 0x00000FFF _08080BAC: adds r0, r0, r6 adds r0, r0, r7 _08080BB0: ldrb r0, [r0] strb r0, [r1] adds r1, #1 adds r2, #2 adds r3, #1 cmp r3, r5 bls _08080B80 pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08080BC4 sub_08080BC4: @ 0x08080BC4 push {r4, r5, r6, lr} ldr r3, _08080C40 @ =gRoomControls movs r0, #0xa ldrsh r1, [r3, r0] ldrh r0, [r3, #6] subs r5, r1, r0 movs r2, #0xf ands r5, r2 movs r1, #0xc ldrsh r0, [r3, r1] ldrh r1, [r3, #8] subs r0, r0, r1 ands r0, r2 adds r6, r0, #0 adds r6, #8 ldrh r2, [r3, #0x16] adds r4, r2, #0 cmp r4, #0 beq _08080C50 subs r2, #1 strh r2, [r3, #0x16] ldrb r0, [r3, #0x14] lsls r0, r0, #4 movs r1, #0xe ands r2, r1 adds r0, r0, r2 ldr r1, _08080C44 @ =gUnk_080169A4 adds r2, r0, r1 ldr r4, _08080C48 @ =gUnk_02025EB0 ldr r1, [r4] cmp r1, #0 beq _08080C16 movs r0, #0 ldrsb r0, [r2, r0] adds r0, r0, r5 strh r0, [r1, #2] ldr r1, [r4] movs r0, #1 ldrsb r0, [r2, r0] adds r0, r0, r6 strh r0, [r1, #4] _08080C16: ldr r4, _08080C4C @ =gUnk_0200B650 ldr r1, [r4] cmp r1, #0 beq _08080C30 movs r0, #0 ldrsb r0, [r2, r0] adds r0, r0, r5 strh r0, [r1, #2] ldr r1, [r4] movs r0, #1 ldrsb r0, [r2, r0] adds r0, r0, r6 strh r0, [r1, #4] _08080C30: ldrb r1, [r2] adds r0, r3, #0 adds r0, #0x24 strb r1, [r0] ldrb r1, [r2, #1] adds r0, #1 strb r1, [r0] b _08080C76 .align 2, 0 _08080C40: .4byte gRoomControls _08080C44: .4byte gUnk_080169A4 _08080C48: .4byte gUnk_02025EB0 _08080C4C: .4byte gUnk_0200B650 _08080C50: ldr r0, _08080C78 @ =gUnk_02025EB0 ldr r1, [r0] cmp r1, #0 beq _08080C5E strh r5, [r1, #2] ldr r0, [r0] strh r6, [r0, #4] _08080C5E: ldr r0, _08080C7C @ =gUnk_0200B650 ldr r1, [r0] cmp r1, #0 beq _08080C6C strh r5, [r1, #2] ldr r0, [r0] strh r6, [r0, #4] _08080C6C: adds r0, r3, #0 adds r0, #0x24 strb r4, [r0] adds r0, #1 strb r4, [r0] _08080C76: pop {r4, r5, r6, pc} .align 2, 0 _08080C78: .4byte gUnk_02025EB0 _08080C7C: .4byte gUnk_0200B650 thumb_func_start sub_08080C80 sub_08080C80: @ 0x08080C80 push {r4, lr} bl sub_080197D4 ldr r0, _08080CA8 @ =gUnk_02025EB4 ldr r4, _08080CAC @ =gRoomControls ldrh r1, [r4, #0x1e] lsrs r1, r1, #4 ldrh r2, [r4, #0x20] lsrs r2, r2, #4 bl sub_0807C8B0 ldr r0, _08080CB0 @ =gUnk_0200B654 ldrh r1, [r4, #0x1e] lsrs r1, r1, #4 ldrh r2, [r4, #0x20] lsrs r2, r2, #4 bl sub_0807C8B0 pop {r4, pc} .align 2, 0 _08080CA8: .4byte gUnk_02025EB4 _08080CAC: .4byte gRoomControls _08080CB0: .4byte gUnk_0200B654 thumb_func_start sub_08080CB4 sub_08080CB4: @ 0x08080CB4 push {r4, r5, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x58 ldrb r0, [r4, #0xa] ldrb r1, [r1] cmp r0, r1 beq _08080CF0 adds r1, r0, #0 adds r0, r4, #0 bl LoadAnimation ldrb r0, [r4, #0xa] cmp r0, #0x5c beq _08080CD4 b _08080E00 _08080CD4: ldrb r0, [r4, #0xb] lsls r0, r0, #3 ldr r1, _08080CEC @ =gUnk_080C9CBC adds r0, r0, r1 ldrb r0, [r0] movs r1, #0xf ands r1, r0 lsls r0, r0, #4 orrs r0, r1 strb r0, [r4, #0x1a] b _08080E00 .align 2, 0 _08080CEC: .4byte gUnk_080C9CBC _08080CF0: adds r0, r4, #0 bl sub_080042B8 ldrb r0, [r4, #0x18] lsls r0, r0, #0x1e cmp r0, #0 bne _08080D00 b _08080E00 _08080D00: ldrb r0, [r4, #0xa] subs r0, #0x40 cmp r0, #0x22 bhi _08080E00 lsls r0, r0, #2 ldr r1, _08080D14 @ =_08080D18 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08080D14: .4byte _08080D18 _08080D18: @ jump table .4byte _08080DEE @ case 0 .4byte _08080DEE @ case 1 .4byte _08080DEE @ case 2 .4byte _08080DEE @ case 3 .4byte _08080E00 @ case 4 .4byte _08080E00 @ case 5 .4byte _08080E00 @ case 6 .4byte _08080E00 @ case 7 .4byte _08080E00 @ case 8 .4byte _08080E00 @ case 9 .4byte _08080E00 @ case 10 .4byte _08080E00 @ case 11 .4byte _08080E00 @ case 12 .4byte _08080E00 @ case 13 .4byte _08080E00 @ case 14 .4byte _08080E00 @ case 15 .4byte _08080E00 @ case 16 .4byte _08080E00 @ case 17 .4byte _08080E00 @ case 18 .4byte _08080E00 @ case 19 .4byte _08080E00 @ case 20 .4byte _08080E00 @ case 21 .4byte _08080E00 @ case 22 .4byte _08080E00 @ case 23 .4byte _08080E00 @ case 24 .4byte _08080E00 @ case 25 .4byte _08080E00 @ case 26 .4byte _08080E00 @ case 27 .4byte _08080DEE @ case 28 .4byte _08080E00 @ case 29 .4byte _08080E00 @ case 30 .4byte _08080E00 @ case 31 .4byte _08080DA4 @ case 32 .4byte _08080E00 @ case 33 .4byte _08080DEE @ case 34 _08080DA4: adds r5, r4, #0 adds r5, #0x6a ldrb r0, [r5] cmp r0, #0 beq _08080DB4 subs r0, #1 strb r0, [r5] b _08080E00 _08080DB4: bl Random movs r1, #0x1f ands r0, r1 adds r0, #0xa strb r0, [r5] adds r0, r4, #0 movs r1, #7 movs r2, #0 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _08080E00 adds r0, r4, #0 adds r0, #0x62 ldrb r0, [r0] adds r2, r1, #0 adds r2, #0x62 strb r0, [r2] adds r0, r4, #0 adds r0, #0x63 ldrb r0, [r0] adds r2, #1 strb r0, [r2] adds r0, r4, #0 bl sub_0806FAB0 b _08080E00 _08080DEE: ldr r0, _08080E04 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #0xf ands r0, r1 cmp r0, #0 bne _08080E00 adds r0, r4, #0 bl sub_080A2B80 _08080E00: pop {r4, r5, pc} .align 2, 0 _08080E04: .4byte gUnk_030010A0 thumb_func_start sub_08080E08 sub_08080E08: @ 0x08080E08 push {r4, lr} adds r4, r0, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08080EDE movs r0, #0x7f ands r0, r1 cmp r0, #0x1e bhi _08080EDE lsls r0, r0, #2 ldr r1, _08080E2C @ =_08080E30 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08080E2C: .4byte _08080E30 _08080E30: @ jump table .4byte _08080ED8 @ case 0 .4byte _08080ED8 @ case 1 .4byte _08080EDE @ case 2 .4byte _08080EDE @ case 3 .4byte _08080ED8 @ case 4 .4byte _08080ED8 @ case 5 .4byte _08080ED8 @ case 6 .4byte _08080EDE @ case 7 .4byte _08080ED8 @ case 8 .4byte _08080ED8 @ case 9 .4byte _08080ED8 @ case 10 .4byte _08080ED8 @ case 11 .4byte _08080ED8 @ case 12 .4byte _08080EDE @ case 13 .4byte _08080EDE @ case 14 .4byte _08080EDE @ case 15 .4byte _08080EDE @ case 16 .4byte _08080EDE @ case 17 .4byte _08080EDE @ case 18 .4byte _08080EDE @ case 19 .4byte _08080EAC @ case 20 .4byte _08080EDE @ case 21 .4byte _08080EDE @ case 22 .4byte _08080EDE @ case 23 .4byte _08080EDE @ case 24 .4byte _08080EDE @ case 25 .4byte _08080EDE @ case 26 .4byte _08080EDE @ case 27 .4byte _08080EDE @ case 28 .4byte _08080EDE @ case 29 .4byte _08080ED8 @ case 30 _08080EAC: movs r0, #3 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x3c ldrb r1, [r2] movs r0, #0x10 orrs r0, r1 strb r0, [r2] ldr r0, [r4, #0x4c] str r0, [r4, #0x54] b _08080EDE _08080ED8: adds r0, r4, #0 bl sub_08081598 _08080EDE: adds r0, r4, #0 bl sub_0806F520 cmp r0, #0 beq _08080EF0 adds r0, r4, #0 bl sub_080813BC b _08080F00 _08080EF0: ldr r0, _08080F18 @ =gUnk_0811E7D4 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _08080F00: ldrb r0, [r4, #0xa] cmp r0, #0x5c bne _08080F0E ldr r1, _08080F1C @ =gRoomVars ldrb r0, [r1, #4] adds r0, #1 strb r0, [r1, #4] _08080F0E: adds r0, r4, #0 bl sub_08080CB4 pop {r4, pc} .align 2, 0 _08080F18: .4byte gUnk_0811E7D4 _08080F1C: .4byte gRoomVars thumb_func_start sub_08080F20 sub_08080F20: @ 0x08080F20 push {r4, r5, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x86 ldrh r0, [r1] cmp r0, #0 beq _08080F3A bl sub_0807CBE4 cmp r0, #0 beq _08080F3A bl sub_0805E780 _08080F3A: ldrb r0, [r4, #0xa] cmp r0, #0x60 bne _08080F42 b _0808107C _08080F42: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] ldrb r1, [r4, #0x18] movs r0, #0x31 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] adds r1, r4, #0 adds r1, #0x3f movs r0, #7 strb r0, [r1] subs r1, #3 movs r0, #0x47 strb r0, [r1] adds r1, #4 movs r0, #0x44 strb r0, [r1] adds r1, #5 movs r0, #0xff strb r0, [r1] ldr r0, _08080F9C @ =gUnk_080FD1A8 str r0, [r4, #0x48] ldrb r0, [r4, #0xa] subs r0, #0x3f cmp r0, #0x20 bhi _08081030 lsls r0, r0, #2 ldr r1, _08080FA0 @ =_08080FA4 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08080F9C: .4byte gUnk_080FD1A8 _08080FA0: .4byte _08080FA4 _08080FA4: @ jump table .4byte _08081028 @ case 0 .4byte _08081030 @ case 1 .4byte _08081030 @ case 2 .4byte _08081030 @ case 3 .4byte _08081030 @ case 4 .4byte _08081030 @ case 5 .4byte _08081030 @ case 6 .4byte _08081030 @ case 7 .4byte _08081030 @ case 8 .4byte _08081030 @ case 9 .4byte _08081030 @ case 10 .4byte _08081030 @ case 11 .4byte _08081030 @ case 12 .4byte _08081030 @ case 13 .4byte _08081030 @ case 14 .4byte _08081030 @ case 15 .4byte _08081030 @ case 16 .4byte _08081030 @ case 17 .4byte _08081030 @ case 18 .4byte _08081030 @ case 19 .4byte _08081030 @ case 20 .4byte _08081028 @ case 21 .4byte _08081028 @ case 22 .4byte _08081028 @ case 23 .4byte _08081028 @ case 24 .4byte _08081028 @ case 25 .4byte _08081030 @ case 26 .4byte _08081030 @ case 27 .4byte _08081030 @ case 28 .4byte _08081028 @ case 29 .4byte _08081028 @ case 30 .4byte _08081028 @ case 31 .4byte _08081028 @ case 32 _08081028: adds r1, r4, #0 adds r1, #0x3b movs r0, #0x17 b _08081036 _08081030: adds r1, r4, #0 adds r1, #0x3b movs r0, #0x11 _08081036: strb r0, [r1] ldrb r0, [r4, #0xe] adds r5, r4, #0 adds r5, #0x69 movs r2, #0 strb r0, [r5] adds r0, r4, #0 adds r0, #0x6a strb r2, [r0] adds r0, #2 movs r1, #0 strh r2, [r0] subs r0, #4 strb r1, [r0] strb r1, [r4, #0xe] adds r0, r4, #0 movs r1, #3 bl sub_0805E3A0 ldrb r0, [r4, #0xa] bl sub_0808147C strb r0, [r4, #0x1c] ldr r1, _08081078 @ =gUnk_0811E7E8 ldrb r0, [r5] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 b _080810A4 .align 2, 0 _08081078: .4byte gUnk_0811E7E8 _0808107C: movs r0, #0x40 movs r1, #0x60 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _080810A4 movs r0, #0 strb r0, [r1, #0xe] ldrb r0, [r4, #0xe] cmp r0, #1 bne _0808109A movs r0, #2 strb r0, [r1, #0xb] _0808109A: adds r0, r4, #0 bl CopyPosition bl sub_0805E780 _080810A4: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080810A8 sub_080810A8: @ 0x080810A8 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_080814A4 ldrb r1, [r4, #0x15] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080810D6 movs r0, #0x1f ands r0, r1 strb r0, [r4, #0x15] movs r1, #0x24 ldrsh r0, [r4, r1] cmp r0, #0 bne _080810DC movs r0, #0x80 lsls r0, r0, #1 strh r0, [r4, #0x24] b _080810DC _080810D6: movs r0, #0xff orrs r0, r1 strb r0, [r4, #0x15] _080810DC: ldr r0, [r4, #0x20] cmp r0, #0 bne _080810E8 movs r0, #0xf0 lsls r0, r0, #9 str r0, [r4, #0x20] _080810E8: adds r0, r4, #0 adds r0, #0x38 ldrb r0, [r0] cmp r0, #2 bne _080810F8 adds r0, r4, #0 bl sub_08016A30 _080810F8: pop {r4, pc} .align 2, 0 thumb_func_start sub_080810FC sub_080810FC: @ 0x080810FC push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xa] cmp r0, #0x5f beq _0808110E adds r0, r2, #0 bl sub_08081598 b _0808112E _0808110E: movs r1, #0 movs r0, #2 strb r0, [r2, #0xc] strb r1, [r2, #0xd] ldrb r1, [r2, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r2, #0x10] adds r1, r2, #0 adds r1, #0x3b movs r0, #0x11 strb r0, [r1] ldr r0, _08081130 @ =gLinkEntity adds r1, r2, #0 bl CopyPosition _0808112E: pop {pc} .align 2, 0 _08081130: .4byte gLinkEntity thumb_func_start sub_08081134 sub_08081134: @ 0x08081134 push {r4, lr} adds r4, r0, #0 bl sub_080814A4 adds r1, r4, #0 adds r1, #0x6c ldrh r0, [r1] adds r0, #0x50 strh r0, [r1] adds r0, r4, #0 bl sub_08081150 pop {r4, pc} .align 2, 0 thumb_func_start sub_08081150 sub_08081150: @ 0x08081150 push {lr} movs r1, #2 strb r1, [r0, #0xc] ldrb r2, [r0, #0x10] movs r1, #0x80 orrs r1, r2 strb r1, [r0, #0x10] ldr r1, _08081180 @ =0x0000FF80 strh r1, [r0, #0x36] ldrb r3, [r0, #0x1b] movs r2, #0x3f adds r1, r2, #0 ands r1, r3 movs r3, #0x40 orrs r1, r3 strb r1, [r0, #0x1b] ldrb r1, [r0, #0x19] ands r2, r1 orrs r2, r3 strb r2, [r0, #0x19] ldr r0, _08081184 @ =0x0000012D bl PlaySFX pop {pc} .align 2, 0 _08081180: .4byte 0x0000FF80 _08081184: .4byte 0x0000012D thumb_func_start sub_08081188 sub_08081188: @ 0x08081188 push {lr} adds r2, r0, #0 movs r0, #2 strb r0, [r2, #0xc] ldrb r1, [r2, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r2, #0x10] adds r0, r2, #0 adds r0, #0x38 ldrb r0, [r0] cmp r0, #2 bne _080811A8 adds r0, r2, #0 bl sub_08016A30 _080811A8: pop {pc} .align 2, 0 thumb_func_start sub_080811AC sub_080811AC: @ 0x080811AC push {r4, lr} adds r4, r0, #0 movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #6 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 bl sub_080002A0 adds r4, #0x6e strh r0, [r4] pop {r4, pc} thumb_func_start sub_080811C8 sub_080811C8: @ 0x080811C8 movs r1, #2 strb r1, [r0, #0xc] ldrb r2, [r0, #0x18] subs r1, #6 ands r1, r2 strb r1, [r0, #0x18] bx lr .align 2, 0 thumb_func_start sub_080811D8 sub_080811D8: @ 0x080811D8 push {lr} bl sub_08081188 ldr r0, _080811E8 @ =0x00000215 bl PlaySFX pop {pc} .align 2, 0 _080811E8: .4byte 0x00000215 thumb_func_start sub_080811EC sub_080811EC: @ 0x080811EC push {r4, lr} adds r4, r0, #0 adds r0, #0x69 ldrb r0, [r0] cmp r0, #6 beq _08081200 adds r0, r4, #0 bl sub_080AEFE0 b _08081206 _08081200: adds r0, r4, #0 bl sub_0806F69C _08081206: movs r1, #0xa0 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 ldr r0, [r4, #0x20] cmp r0, #0 bgt _08081228 movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r0, r4, #0 bl sub_080814A4 _08081228: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808122C sub_0808122C: @ 0x0808122C push {lr} ldr r2, _08081244 @ =gUnk_0811E814 adds r1, r0, #0 adds r1, #0x69 ldrb r1, [r1] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08081244: .4byte gUnk_0811E814 thumb_func_start sub_08081248 sub_08081248: @ 0x08081248 push {r4, lr} adds r4, r0, #0 bl sub_08081500 adds r0, r4, #0 bl sub_080814C0 cmp r0, #0 beq _08081264 adds r0, r4, #0 movs r1, #0 bl sub_08081404 b _0808126A _08081264: adds r0, r4, #0 bl sub_0800442E _0808126A: pop {r4, pc} thumb_func_start sub_0808126C sub_0808126C: @ 0x0808126C push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 bl sub_0808153C pop {r4, pc} thumb_func_start sub_0808127C sub_0808127C: @ 0x0808127C push {r4, lr} adds r4, r0, #0 bl sub_080814C0 cmp r0, #0 beq _08081292 adds r0, r4, #0 movs r1, #0 bl sub_08081404 b _08081298 _08081292: adds r0, r4, #0 bl sub_0808153C _08081298: pop {r4, pc} .align 2, 0 thumb_func_start nullsub_113 nullsub_113: @ 0x0808129C bx lr .align 2, 0 thumb_func_start sub_080812A0 sub_080812A0: @ 0x080812A0 push {lr} bl sub_08081500 pop {pc} thumb_func_start sub_080812A8 sub_080812A8: @ 0x080812A8 push {r4, r5, lr} adds r5, r0, #0 bl sub_080002D0 cmp r0, #0xf beq _080812E4 adds r0, r5, #0 adds r0, #0x6e ldrh r4, [r0] adds r0, r5, #0 bl sub_080002A0 cmp r4, r0 beq _080812E4 movs r0, #0 strb r0, [r5, #0x15] movs r2, #0 strh r0, [r5, #0x24] ldrb r1, [r5, #0x18] subs r0, #4 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] adds r0, r5, #0 adds r0, #0x69 strb r2, [r0] adds r0, r5, #0 bl sub_080810A8 _080812E4: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080812E8 sub_080812E8: @ 0x080812E8 push {r4, lr} adds r4, r0, #0 ldr r3, _0808131C @ =gLinkState adds r0, r3, #0 adds r0, #0x26 ldrb r1, [r0] movs r2, #0x80 adds r0, r2, #0 ands r0, r1 cmp r0, #0 beq _08081318 ldr r0, [r3, #0x30] ands r0, r2 cmp r0, #0 bne _08081318 ldr r1, _08081320 @ =gLinkEntity adds r0, r4, #0 bl sub_080177A0 cmp r0, #0 beq _08081318 adds r0, r4, #0 bl sub_080810FC _08081318: pop {r4, pc} .align 2, 0 _0808131C: .4byte gLinkState _08081320: .4byte gLinkEntity thumb_func_start nullsub_510 nullsub_510: @ 0x08081324 bx lr .align 2, 0 thumb_func_start sub_08081328 sub_08081328: @ 0x08081328 push {r4, lr} adds r4, r0, #0 ldr r2, [r4, #0x54] ldrh r1, [r2, #8] movs r0, #0xc2 lsls r0, r0, #2 cmp r1, r0 beq _08081342 adds r0, r4, #0 movs r1, #0 bl sub_08081404 b _08081364 _08081342: adds r0, r2, #0 adds r1, r4, #0 bl CopyPosition ldrh r0, [r4, #0x36] subs r0, #1 strh r0, [r4, #0x36] ldr r2, _08081368 @ =gLinkEntity adds r0, r4, #0 adds r1, r2, #0 bl sub_080177A0 cmp r0, #0 beq _08081364 adds r0, r4, #0 bl sub_080810FC _08081364: pop {r4, pc} .align 2, 0 _08081368: .4byte gLinkEntity thumb_func_start sub_0808136C sub_0808136C: @ 0x0808136C push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 cmp r0, #0 beq _080813B2 ldr r3, [r5, #0x54] ldr r0, [r3, #0x2c] str r0, [r5, #0x2c] ldr r0, [r3, #0x30] str r0, [r5, #0x30] ldrb r2, [r3, #0x1b] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r4, [r5, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r4 orrs r0, r2 strb r0, [r5, #0x1b] ldrb r0, [r3, #0x19] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r5, #0x19] ands r1, r2 orrs r1, r0 strb r1, [r5, #0x19] movs r1, #0xa0 lsls r1, r1, #6 adds r0, r5, #0 bl sub_08003FC4 b _080813BA _080813B2: adds r0, r5, #0 movs r1, #1 bl sub_08081404 _080813BA: pop {r4, r5, pc} thumb_func_start sub_080813BC sub_080813BC: @ 0x080813BC push {lr} ldr r2, _080813D0 @ =gUnk_0811E840 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080813D0: .4byte gUnk_0811E840 thumb_func_start sub_080813D4 sub_080813D4: @ 0x080813D4 movs r3, #1 movs r1, #1 strb r1, [r0, #0xd] strb r1, [r0, #0x1d] ldrb r2, [r0, #0x18] subs r1, #5 ands r1, r2 orrs r1, r3 strb r1, [r0, #0x18] bx lr thumb_func_start sub_080813E8 sub_080813E8: @ 0x080813E8 push {lr} bl sub_0806F4E8 pop {pc} thumb_func_start sub_080813F0 sub_080813F0: @ 0x080813F0 push {r4, lr} adds r4, r0, #0 bl sub_0806F3E4 cmp r0, #0 beq _08081402 adds r0, r4, #0 bl sub_080810FC _08081402: pop {r4, pc} thumb_func_start sub_08081404 sub_08081404: @ 0x08081404 push {lr} cmp r1, #0 beq _08081418 adds r1, r0, #0 adds r1, #0x86 ldrh r0, [r1] cmp r0, #0 beq _08081418 bl sub_0807CCC8 _08081418: bl sub_0805E780 pop {pc} .align 2, 0 thumb_func_start sub_08081420 sub_08081420: @ 0x08081420 push {r4, lr} adds r4, r0, #0 bl sub_08081450 cmp r0, #0 bne _08081438 ldrb r0, [r4, #0xa] ldrb r1, [r4, #0xb] bl sub_08053FF0 movs r0, #0 b _0808144C _08081438: adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 ldrb r0, [r4, #0xa] ldrb r1, [r4, #0xb] movs r2, #0 bl sub_080A7C00 movs r0, #1 _0808144C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08081450 sub_08081450: @ 0x08081450 push {r4, lr} movs r4, #0 ldr r1, _08081478 @ =gUnk_080FD5B4 ldrb r2, [r0, #0xa] lsls r0, r2, #3 adds r0, r0, r1 ldrb r1, [r0, #3] movs r0, #2 ands r0, r1 cmp r0, #0 bne _08081470 adds r0, r2, #0 bl GetInventoryValue cmp r0, #0 bne _08081472 _08081470: movs r4, #1 _08081472: adds r0, r4, #0 pop {r4, pc} .align 2, 0 _08081478: .4byte gUnk_080FD5B4 thumb_func_start sub_0808147C sub_0808147C: @ 0x0808147C lsls r0, r0, #3 ldr r1, _08081488 @ =gUnk_0811E84C adds r0, r0, r1 ldrb r0, [r0, #4] bx lr .align 2, 0 _08081488: .4byte gUnk_0811E84C thumb_func_start sub_0808148C sub_0808148C: @ 0x0808148C push {lr} lsls r0, r0, #3 ldr r1, _080814A0 @ =gUnk_0811E84C adds r1, r0, r1 ldrh r0, [r1, #2] cmp r0, #0 beq _0808149E bl PlaySFX _0808149E: pop {pc} .align 2, 0 _080814A0: .4byte gUnk_0811E84C thumb_func_start sub_080814A4 sub_080814A4: @ 0x080814A4 push {lr} adds r1, r0, #0 adds r0, #0x69 ldrb r0, [r0] cmp r0, #0xa bne _080814B6 adds r1, #0x6c movs r0, #0x78 b _080814BC _080814B6: adds r1, #0x6c movs r0, #0x96 lsls r0, r0, #2 _080814BC: strh r0, [r1] pop {pc} thumb_func_start sub_080814C0 sub_080814C0: @ 0x080814C0 push {r4, lr} adds r4, r0, #0 bl sub_0805E40C cmp r0, #0 bne _080814FA adds r0, r4, #0 adds r0, #0x6c ldrh r1, [r0] subs r1, #1 strh r1, [r0] lsls r0, r1, #0x10 cmp r0, #0 bne _080814E0 movs r0, #1 b _080814FC _080814E0: lsls r0, r1, #0x10 lsrs r0, r0, #0x10 cmp r0, #0x59 bhi _080814FA ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _080814FA: movs r0, #0 _080814FC: pop {r4, pc} .align 2, 0 thumb_func_start sub_08081500 sub_08081500: @ 0x08081500 push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x68 ldrb r0, [r5] cmp r0, #0 bne _08081538 movs r1, #0xa0 lsls r1, r1, #6 adds r0, r4, #0 bl sub_080044EC cmp r0, #0 bne _08081522 movs r0, #1 strb r0, [r5] b _08081538 _08081522: cmp r0, #1 bne _08081532 ldrb r0, [r4, #0xa] bl sub_0808148C adds r0, r4, #0 bl UpdateSpriteOrderAndFlip _08081532: adds r0, r4, #0 bl sub_080AEFE0 _08081538: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0808153C sub_0808153C: @ 0x0808153C push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x68 ldrb r0, [r5] cmp r0, #1 bhi _08081596 cmp r0, #0 bne _0808157E movs r1, #0x80 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08081596 adds r0, r4, #0 bl sub_0800442E cmp r0, #0 bne _08081596 movs r0, #1 strb r0, [r5] movs r0, #0xf0 lsls r0, r0, #9 str r0, [r4, #0x20] ldrb r0, [r4, #0xa] bl sub_0808148C adds r0, r4, #0 bl UpdateSpriteOrderAndFlip b _08081596 _0808157E: movs r1, #0xa0 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08081596 movs r0, #2 strb r0, [r5] ldrb r0, [r4, #0xa] bl sub_0808148C _08081596: pop {r4, r5, pc} thumb_func_start sub_08081598 sub_08081598: @ 0x08081598 push {r4, lr} adds r4, r0, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _080815AC adds r0, r4, #0 movs r1, #1 bl sub_08081404 _080815AC: ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] movs r0, #4 strb r0, [r4, #0xc] movs r0, #0xe strb r0, [r4, #0xe] movs r0, #0x80 lsls r0, r0, #0xa str r0, [r4, #0x20] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x10 orrs r0, r1 movs r1, #8 rsbs r1, r1, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] ldr r0, _08081618 @ =gLinkEntity str r0, [r4, #0x54] adds r1, r4, #0 bl CopyPosition ldrh r0, [r4, #0x36] subs r0, #4 strh r0, [r4, #0x36] ldrb r0, [r4, #0xa] cmp r0, #0x5f beq _08081614 adds r0, r4, #0 bl sub_08081420 cmp r0, #0 beq _08081614 adds r0, r4, #0 movs r1, #1 bl sub_08081404 _08081614: pop {r4, pc} .align 2, 0 _08081618: .4byte gLinkEntity thumb_func_start sub_0808161C sub_0808161C: @ 0x0808161C push {lr} ldr r2, _08081630 @ =gUnk_0811EBFC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08081630: .4byte gUnk_0811EBFC thumb_func_start sub_08081634 sub_08081634: @ 0x08081634 push {r4, r5, lr} adds r4, r0, #0 adds r0, #0x6c ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808169C movs r5, #0 movs r0, #0x65 strh r0, [r4, #0x12] movs r1, #2 strb r1, [r4, #0xc] strb r5, [r4, #0x15] movs r0, #0x40 strh r0, [r4, #0x24] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip ldrb r0, [r4, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x19] ldrb r0, [r4, #0xe] movs r2, #0x80 cmp r0, #0 beq _08081674 adds r2, r0, #0 strb r5, [r4, #0xe] _08081674: adds r0, r4, #0 adds r1, r2, #0 movs r3, #0 bl sub_0805EC9C adds r0, r4, #0 movs r1, #4 movs r2, #0 bl sub_080AE008 adds r0, r4, #0 movs r1, #0 bl LoadAnimation ldr r0, _08081698 @ =0x00000129 bl PlaySFX b _0808170C .align 2, 0 _08081698: .4byte 0x00000129 _0808169C: movs r0, #0xc ands r0, r1 cmp r0, #0 beq _080816B2 adds r0, r4, #0 bl sub_08081790 adds r0, r4, #0 bl sub_0808180C b _08081702 _080816B2: movs r0, #2 ands r0, r1 cmp r0, #0 beq _080816C4 adds r0, r4, #0 movs r1, #2 bl UpdateSprite b _08081702 _080816C4: adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] ldr r1, _08081718 @ =gUnk_0811EC08 ldrb r0, [r4, #0xa] lsrs r0, r0, #2 adds r0, r0, r1 ldrb r2, [r0] ldrb r0, [r4, #0xa] movs r1, #3 ands r0, r1 lsls r0, r0, #1 asrs r2, r0 ands r2, r1 ldr r1, [r4, #0x50] cmp r1, #0 beq _080816FA ldr r0, _0808171C @ =gUnk_0811EC20 adds r0, r2, r0 ldrb r0, [r0] strb r0, [r1, #0xe] _080816FA: adds r0, r4, #0 adds r1, r2, #0 bl UpdateSprite _08081702: movs r0, #1 strb r0, [r4, #0xc] movs r0, #0xff bl sub_08004488 _0808170C: adds r0, r4, #0 movs r1, #3 bl sub_0805E3A0 pop {r4, r5, pc} .align 2, 0 _08081718: .4byte gUnk_0811EC08 _0808171C: .4byte gUnk_0811EC20 thumb_func_start sub_08081720 sub_08081720: @ 0x08081720 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08081744 adds r0, r4, #0 bl sub_08081790 adds r0, r4, #0 bl sub_0808180C b _0808175E _08081744: movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808175E adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] _0808175E: pop {r4, pc} thumb_func_start sub_08081760 sub_08081760: @ 0x08081760 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808177E adds r0, r4, #0 bl sub_0808180C b _0808178C _0808177E: movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808178C adds r0, r4, #0 bl sub_0806F69C _0808178C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08081790 sub_08081790: @ 0x08081790 push {lr} adds r2, r0, #0 adds r1, r2, #0 adds r1, #0x6d ldrb r0, [r1] cmp r0, #0xef bhi _080817B4 ldr r0, _080817B0 @ =gUnk_0811EC64 ldrb r1, [r1] adds r1, r1, r0 ldrb r1, [r1] adds r0, r2, #0 bl sub_0805457C b _080817C6 .align 2, 0 _080817B0: .4byte gUnk_0811EC64 _080817B4: ldr r0, _080817C8 @ =gUnk_0811EC24 ldrb r1, [r1] subs r1, #0xf0 lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 _080817C6: pop {pc} .align 2, 0 _080817C8: .4byte gUnk_0811EC24 thumb_func_start sub_080817CC sub_080817CC: @ 0x080817CC push {lr} movs r1, #9 bl sub_0805457C pop {pc} .align 2, 0 thumb_func_start sub_080817D8 sub_080817D8: @ 0x080817D8 push {lr} movs r1, #0xd bl sub_0805457C pop {pc} .align 2, 0 thumb_func_start sub_080817E4 sub_080817E4: @ 0x080817E4 push {lr} movs r1, #0xe bl sub_0805457C pop {pc} .align 2, 0 thumb_func_start sub_080817F0 sub_080817F0: @ 0x080817F0 push {lr} movs r1, #1 bl sub_0805457C pop {pc} .align 2, 0 thumb_func_start sub_080817FC sub_080817FC: @ 0x080817FC push {lr} adds r1, r0, #0 adds r1, #0x6e ldrb r1, [r1] movs r2, #0 bl sub_08054754 pop {pc} thumb_func_start sub_0808180C sub_0808180C: @ 0x0808180C push {lr} bl sub_0805E780 pop {pc} thumb_func_start sub_08081814 sub_08081814: @ 0x08081814 push {r4, lr} adds r4, r0, #0 ldr r1, _08081850 @ =gUnk_0811EE28 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl sub_080040A8 cmp r0, #0 beq _08081838 adds r0, r4, #0 bl sub_08080CB4 _08081838: ldrb r0, [r4, #0xe] cmp r0, #2 bgt _0808184E cmp r0, #1 blt _0808184E ldrb r0, [r4, #0xc] cmp r0, #1 bne _0808184E adds r0, r4, #0 bl sub_0800445C _0808184E: pop {r4, pc} .align 2, 0 _08081850: .4byte gUnk_0811EE28 thumb_func_start sub_08081854 sub_08081854: @ 0x08081854 push {r4, lr} adds r4, r0, #0 movs r3, #0 movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] strb r3, [r4, #0x16] str r4, [r4, #0x54] adds r0, r4, #0 bl sub_08081A5C ldrb r0, [r4, #0xe] cmp r0, #0 beq _0808188E cmp r0, #1 beq _08081898 b _0808189C _0808188E: ldr r0, _08081894 @ =gUnk_080FD328 b _0808189A .align 2, 0 _08081894: .4byte gUnk_080FD328 _08081898: ldr r0, _080818A0 @ =gUnk_080FD198 _0808189A: str r0, [r4, #0x48] _0808189C: pop {r4, pc} .align 2, 0 _080818A0: .4byte gUnk_080FD198 thumb_func_start sub_080818A4 sub_080818A4: @ 0x080818A4 push {r4, lr} adds r4, r0, #0 ldrb r2, [r4, #0xd] cmp r2, #0 beq _080818C0 movs r1, #2 strb r1, [r4, #0xc] ldr r0, _080818BC @ =gUnk_0200AF00 adds r0, #0x2f strb r1, [r0] b _08081920 .align 2, 0 _080818BC: .4byte gUnk_0200AF00 _080818C0: ldrb r0, [r4, #0xa] cmp r0, #0x36 bne _080818F0 adds r1, r4, #0 adds r1, #0x39 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 beq _08081920 strb r2, [r1] movs r0, #3 strb r0, [r4, #0xc] ldr r1, _080818E8 @ =gRoomVars movs r0, #1 str r0, [r1, #0x68] ldr r1, _080818EC @ =gLinkState movs r0, #7 strb r0, [r1, #0xc] b _08081920 .align 2, 0 _080818E8: .4byte gRoomVars _080818EC: .4byte gLinkState _080818F0: adds r1, r4, #0 adds r1, #0x39 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 beq _08081920 strb r2, [r1] movs r0, #1 strb r0, [r4, #0xd] bl sub_08078B48 bl sub_08077B2C ldr r1, _08081924 @ =gLinkState movs r0, #4 strb r0, [r1, #5] ldr r0, _08081928 @ =gLinkEntity str r4, [r0, #0x74] ldr r0, _0808192C @ =gUnk_0200AF00 adds r0, #0x2f movs r1, #2 strb r1, [r0] bl sub_08056360 _08081920: pop {r4, pc} .align 2, 0 _08081924: .4byte gLinkState _08081928: .4byte gLinkEntity _0808192C: .4byte gUnk_0200AF00 thumb_func_start sub_08081930 sub_08081930: @ 0x08081930 push {r4, r5, r6, lr} adds r4, r0, #0 ldr r0, _08081968 @ =gUnk_0200AF00 adds r6, r0, #0 adds r6, #0x2f movs r0, #2 strb r0, [r6] ldr r3, _0808196C @ =gLinkEntity ldrb r1, [r3, #0x18] lsls r1, r1, #0x1e lsrs r1, r1, #0x1e ldrb r2, [r4, #0x18] subs r0, #6 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] ldr r5, _08081970 @ =gLinkState ldrb r0, [r5, #5] cmp r0, #0 beq _0808195E ldr r0, [r3, #0x74] cmp r4, r0 beq _08081974 _0808195E: adds r0, r4, #0 bl sub_080819B4 b _080819AC .align 2, 0 _08081968: .4byte gUnk_0200AF00 _0808196C: .4byte gLinkEntity _08081970: .4byte gLinkState _08081974: bl sub_080784E4 adds r1, r0, #0 ldr r0, [r1, #8] cmp r0, #0 beq _08081998 ldrb r0, [r1, #1] cmp r0, #1 bne _08081998 movs r0, #7 strb r0, [r6] adds r0, r5, #0 adds r0, #0x92 ldrh r1, [r0] movs r0, #0x88 ands r0, r1 cmp r0, #0 bne _080819AC _08081998: ldr r0, _080819B0 @ =gLinkState adds r0, #0x92 ldrh r1, [r0] movs r0, #0x98 ands r0, r1 cmp r0, #0 beq _080819AC adds r0, r4, #0 bl sub_080819B4 _080819AC: pop {r4, r5, r6, pc} .align 2, 0 _080819B0: .4byte gLinkState thumb_func_start sub_080819B4 sub_080819B4: @ 0x080819B4 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r0, _08081A48 @ =gRoomVars ldrb r0, [r0, #6] cmp r0, #0 bne _080819D4 ldr r0, [r5, #0x50] cmp r0, #0 beq _080819D0 adds r0, #0x20 ldrb r1, [r5, #0xf] adds r0, r0, r1 movs r1, #0xff strb r1, [r0] _080819D0: bl sub_0805E780 _080819D4: ldr r0, _08081A4C @ =gLinkState movs r2, #0 strb r2, [r0, #5] ldr r4, _08081A50 @ =gLinkEntity str r2, [r4, #0x74] ldr r1, _08081A54 @ =gUnk_0200AF00 ldr r3, _08081A48 @ =gRoomVars strb r2, [r3, #6] adds r0, r1, #0 adds r0, #0x2c strb r2, [r0] adds r1, #0x2f strb r2, [r1] strb r2, [r3, #7] adds r1, r5, #0 adds r1, #0x80 ldr r3, _08081A58 @ =gRoomControls ldrh r0, [r3, #6] ldrh r1, [r1] adds r0, r0, r1 movs r1, #0 strh r0, [r5, #0x2e] movs r6, #0x82 ldrh r0, [r3, #8] ldrh r3, [r6, r5] adds r0, r0, r3 strh r0, [r5, #0x32] str r2, [r5, #0x34] movs r3, #1 strb r3, [r5, #0xc] strb r1, [r5, #0xd] ldrb r1, [r4, #0x1b] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r5, #0x1b] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r5, #0x1b] adds r0, r5, #0 adds r0, #0x38 strb r3, [r0] adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] adds r0, r5, #0 bl UpdateSpriteOrderAndFlip adds r0, r5, #0 bl sub_08081A5C pop {r4, r5, r6, pc} .align 2, 0 _08081A48: .4byte gRoomVars _08081A4C: .4byte gLinkState _08081A50: .4byte gLinkEntity _08081A54: .4byte gUnk_0200AF00 _08081A58: .4byte gRoomControls thumb_func_start sub_08081A5C sub_08081A5C: @ 0x08081A5C push {r4, lr} adds r4, r0, #0 bl sub_080787D8 adds r2, r0, #0 ldrb r0, [r4, #0xe] cmp r0, #1 bne _08081A7A ldr r0, _08081A7C @ =gUnk_03003DF0 lsls r1, r2, #1 adds r1, r1, r2 lsls r1, r1, #2 adds r1, r1, r0 movs r0, #0 strb r0, [r1, #0xa] _08081A7A: pop {r4, pc} .align 2, 0 _08081A7C: .4byte gUnk_03003DF0 thumb_func_start sub_08081A80 sub_08081A80: @ 0x08081A80 push {lr} adds r2, r0, #0 ldr r0, _08081A98 @ =gRoomVars ldr r0, [r0, #0x68] cmp r0, #0 bne _08081A9C bl sub_08081AB0 bl sub_0805E780 b _08081AAC .align 2, 0 _08081A98: .4byte gRoomVars _08081A9C: cmp r0, #2 bne _08081AAC movs r1, #0 movs r0, #1 strb r0, [r2, #0xc] strb r1, [r2, #0xd] bl sub_08081AB0 _08081AAC: pop {pc} .align 2, 0 thumb_func_start sub_08081AB0 sub_08081AB0: @ 0x08081AB0 push {lr} ldr r1, _08081AC4 @ =gRoomVars movs r0, #0 str r0, [r1, #0x68] strb r0, [r1, #6] strb r0, [r1, #7] bl sub_08078A90 pop {pc} .align 2, 0 _08081AC4: .4byte gRoomVars thumb_func_start sub_08081AC8 sub_08081AC8: @ 0x08081AC8 push {lr} ldr r2, _08081ADC @ =gUnk_0811EE38 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08081ADC: .4byte gUnk_0811EE38 thumb_func_start sub_08081AE0 sub_08081AE0: @ 0x08081AE0 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] adds r0, r4, #0 adds r0, #0x84 ldrh r1, [r0] cmp r1, #0 beq _08081B0E subs r0, #0x4c strb r1, [r0] _08081B0E: movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08081B6C @ =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 r5, r4, #0 adds r5, #0x74 strh r1, [r5] ldrh r0, [r5] adds r6, r4, #0 adds r6, #0x38 ldrb r1, [r6] bl sub_080002B0 adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] ldrb r0, [r4, #0xa] cmp r0, #0 bne _08081B70 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08081B70 movs r0, #5 strb r0, [r4, #0xc] ldrh r1, [r5] ldrb r2, [r6] movs r0, #0x7a bl sub_0807B314 b _08081B82 .align 2, 0 _08081B6C: .4byte gRoomControls _08081B70: adds r0, r4, #0 bl sub_08081E3C cmp r0, #0 beq _08081B7E movs r0, #2 b _08081B80 _08081B7E: movs r0, #1 _08081B80: strb r0, [r4, #0xc] _08081B82: pop {r4, r5, r6, pc} thumb_func_start sub_08081B84 sub_08081B84: @ 0x08081B84 push {r4, lr} adds r4, r0, #0 bl sub_08081E3C cmp r0, #0 beq _08081BAA movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002B0 adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] _08081BAA: pop {r4, pc} thumb_func_start sub_08081BAC sub_08081BAC: @ 0x08081BAC push {r4, lr} adds r4, r0, #0 bl sub_08081CB0 cmp r0, #0 beq _08081BDC movs r0, #0 strb r0, [r4, #0xd] movs r0, #0xa strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #0xa bl sub_0805E4E0 adds r0, r4, #0 bl sub_08081FF8 ldrb r0, [r4, #0xa] cmp r0, #1 bne _08081BD8 movs r0, #3 b _08081BDA _08081BD8: movs r0, #5 _08081BDA: strb r0, [r4, #0xc] _08081BDC: pop {r4, pc} .align 2, 0 thumb_func_start sub_08081BE0 sub_08081BE0: @ 0x08081BE0 push {r4, lr} adds r4, r0, #0 movs r1, #0x78 bl sub_08081F7C cmp r0, #0 beq _08081C2C adds r0, r4, #0 bl sub_08081D28 cmp r0, #0 bne _08081C26 movs r0, #4 strb r0, [r4, #0xc] movs r0, #1 strb r0, [r4, #0xf] ldr r1, _08081C1C @ =gLinkState ldrb r0, [r1, #5] cmp r0, #2 beq _08081C16 adds r0, r1, #0 adds r0, #0x35 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _08081C20 _08081C16: movs r0, #0x18 strb r0, [r4, #0xe] b _08081C2C .align 2, 0 _08081C1C: .4byte gLinkState _08081C20: movs r0, #8 strb r0, [r4, #0xe] b _08081C2C _08081C26: adds r0, r4, #0 bl sub_08081E6C _08081C2C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08081C30 sub_08081C30: @ 0x08081C30 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] cmp r0, #0 beq _08081C70 subs r0, #1 movs r5, #0 strb r0, [r4, #0xe] ldrb r0, [r4, #0xf] cmp r0, #0 beq _08081C5A strb r5, [r4, #0xf] ldr r0, _08081C6C @ =0x00004035 adds r1, r4, #0 adds r1, #0x74 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer _08081C5A: adds r0, r4, #0 bl sub_08081CB0 cmp r0, #0 beq _08081C96 movs r0, #3 strb r0, [r4, #0xc] strb r5, [r4, #0xe] b _08081C96 .align 2, 0 _08081C6C: .4byte 0x00004035 _08081C70: movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CD48 adds r0, r4, #0 adds r0, #0x74 ldrh r1, [r0] subs r0, #0x3c ldrb r2, [r0] movs r0, #0x77 bl sub_0807B314 movs r0, #0x86 lsls r0, r0, #1 bl PlaySFX _08081C96: pop {r4, r5, pc} thumb_func_start sub_08081C98 sub_08081C98: @ 0x08081C98 push {r4, lr} adds r4, r0, #0 movs r1, #0x7a bl sub_08081F7C cmp r0, #0 beq _08081CAC adds r0, r4, #0 bl sub_08081E6C _08081CAC: pop {r4, pc} .align 2, 0 thumb_func_start sub_08081CB0 sub_08081CB0: @ 0x08081CB0 push {r4, r5, r6, lr} adds r4, r0, #0 bl sub_08081D74 cmp r0, #0 beq _08081CEC adds r1, r4, #0 adds r1, #0x70 ldr r0, _08081CE4 @ =0x0000FFFF strh r0, [r1] adds r5, r4, #0 adds r5, #0x74 ldrh r0, [r5] adds r4, #0x38 ldrb r1, [r4] bl sub_080002B0 ldr r1, _08081CE8 @ =0x00004035 cmp r0, r1 bne _08081D1C ldrh r1, [r5] ldrb r2, [r4] movs r0, #0x78 bl sub_0807B7D8 b _08081D1C .align 2, 0 _08081CE4: .4byte 0x0000FFFF _08081CE8: .4byte 0x00004035 _08081CEC: adds r6, r4, #0 adds r6, #0x74 ldrh r0, [r6] adds r5, r4, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080002B0 lsls r0, r0, #0x10 lsrs r1, r0, #0x10 cmp r1, #0x77 beq _08081D24 cmp r1, #0x79 beq _08081D24 ldr r0, _08081D20 @ =0x00004035 cmp r1, r0 beq _08081D24 ldrh r0, [r6] ldrb r1, [r5] bl sub_080001DA adds r1, r4, #0 adds r1, #0x70 strh r0, [r1] _08081D1C: movs r0, #1 b _08081D26 .align 2, 0 _08081D20: .4byte 0x00004035 _08081D24: movs r0, #0 _08081D26: pop {r4, r5, r6, pc} thumb_func_start sub_08081D28 sub_08081D28: @ 0x08081D28 push {r4, r5, lr} adds r4, r0, #0 bl sub_08081D74 cmp r0, #0 beq _08081D44 adds r1, r4, #0 adds r1, #0x70 ldr r0, _08081D40 @ =0x0000FFFF strh r0, [r1] movs r0, #1 b _08081D72 .align 2, 0 _08081D40: .4byte 0x0000FFFF _08081D44: adds r5, r4, #0 adds r5, #0x70 ldrh r1, [r5] ldr r0, _08081D6C @ =0x0000FFFF cmp r1, r0 beq _08081D70 adds r0, r4, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080001DA ldrh r5, [r5] cmp r0, r5 bne _08081D70 movs r0, #1 b _08081D72 .align 2, 0 _08081D6C: .4byte 0x0000FFFF _08081D70: movs r0, #0 _08081D72: pop {r4, r5, pc} thumb_func_start sub_08081D74 sub_08081D74: @ 0x08081D74 push {r4, r5, r6, lr} adds r4, r0, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002E0 cmp r0, #0xf bne _08081D8E movs r0, #0 b _08081E0A _08081D8E: movs r6, #0 adds r0, r4, #0 bl sub_08081E0C cmp r0, #0 beq _08081DB4 ldr r0, _08081DAC @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x90 ands r0, r1 cmp r0, #0 bne _08081E06 ldr r6, _08081DB0 @ =gLinkEntity b _08081E06 .align 2, 0 _08081DAC: .4byte gLinkState _08081DB0: .4byte gLinkEntity _08081DB4: ldr r0, _08081DD8 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 lsls r1, r1, #0xf ands r0, r1 cmp r0, #0 beq _08081E06 ldr r5, _08081DDC @ =gUnk_03004040 ldr r1, [r5] adds r0, r4, #0 movs r2, #5 movs r3, #6 bl sub_080041A0 cmp r0, #0 beq _08081DE0 ldr r6, [r5] b _08081E06 .align 2, 0 _08081DD8: .4byte gLinkState _08081DDC: .4byte gUnk_03004040 _08081DE0: ldr r1, [r5, #4] adds r0, r4, #0 movs r2, #5 movs r3, #6 bl sub_080041A0 cmp r0, #0 beq _08081DF4 ldr r6, [r5, #4] b _08081E06 _08081DF4: ldr r1, [r5, #8] adds r0, r4, #0 movs r2, #5 movs r3, #6 bl sub_080041A0 cmp r0, #0 beq _08081E06 ldr r6, [r5, #8] _08081E06: str r6, [r4, #0x54] adds r0, r6, #0 _08081E0A: pop {r4, r5, r6, pc} thumb_func_start sub_08081E0C sub_08081E0C: @ 0x08081E0C push {r4, r5, lr} adds r4, r0, #0 ldr r5, _08081E28 @ =gLinkEntity movs r1, #0x36 ldrsh r0, [r5, r1] cmp r0, #0 bne _08081E22 bl sub_08079F8C cmp r0, #0 bne _08081E2C _08081E22: movs r0, #0 b _08081E38 .align 2, 0 _08081E28: .4byte gLinkEntity _08081E2C: adds r0, r4, #0 adds r1, r5, #0 movs r2, #5 movs r3, #6 bl sub_080041A0 _08081E38: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08081E3C sub_08081E3C: @ 0x08081E3C push {lr} adds r1, r0, #0 adds r1, #0x74 ldrh r2, [r1] adds r0, #0x38 ldrb r1, [r0] adds r0, r2, #0 bl sub_080002B0 adds r2, r0, #0 ldr r1, _08081E64 @ =gUnk_0811EE50 _08081E52: ldrh r0, [r1] cmp r0, r2 beq _08081E68 adds r1, #2 ldrh r0, [r1] cmp r0, #0 bne _08081E52 movs r0, #0 b _08081E6A .align 2, 0 _08081E64: .4byte gUnk_0811EE50 _08081E68: movs r0, #1 _08081E6A: pop {pc} thumb_func_start sub_08081E6C sub_08081E6C: @ 0x08081E6C push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r0, #0x74 ldrh r6, [r0] subs r0, #0x3c ldrb r5, [r0] adds r0, r6, #0 adds r1, r5, #0 bl sub_080002B0 adds r7, r0, #0 ldr r0, _08081EEC @ =0x00003FFF cmp r7, r0 bls _08081EE8 adds r0, r5, #0 bl sub_0808094C adds r1, r0, #0 ldrb r0, [r4, #0xa] movs r4, #0x78 cmp r0, #0 bne _08081E9A movs r4, #0x7a _08081E9A: ldr r0, _08081EF0 @ =0x00007004 adds r3, r1, r0 lsls r0, r4, #1 ldr r2, _08081EF4 @ =0x00006004 adds r1, r1, r2 adds r1, r1, r0 ldrh r0, [r1] lsls r0, r0, #3 adds r3, r3, r0 ldr r2, _08081EF8 @ =gUnk_02019EE0 cmp r5, #2 bne _08081EB4 ldr r2, _08081EFC @ =gUnk_02002F00 _08081EB4: movs r0, #0x3f ands r0, r6 lsls r0, r0, #1 movs r1, #0xfc lsls r1, r1, #4 ands r1, r6 lsls r1, r1, #2 adds r0, r0, r1 lsls r0, r0, #1 adds r2, r2, r0 adds r0, r2, #0 adds r1, r3, #0 bl sub_08081F00 cmp r0, #0 bne _08081EE8 adds r0, r4, #0 adds r1, r6, #0 adds r2, r5, #0 bl sub_0807B314 adds r0, r7, #0 adds r1, r6, #0 adds r2, r5, #0 bl UpdateCollisionLayer _08081EE8: pop {r4, r5, r6, r7, pc} .align 2, 0 _08081EEC: .4byte 0x00003FFF _08081EF0: .4byte 0x00007004 _08081EF4: .4byte 0x00006004 _08081EF8: .4byte gUnk_02019EE0 _08081EFC: .4byte gUnk_02002F00 thumb_func_start sub_08081F00 sub_08081F00: @ 0x08081F00 push {lr} adds r2, r0, #0 adds r3, r1, #0 ldr r1, [r2] ldr r0, [r3] cmp r1, r0 bne _08081F20 movs r1, #0x80 lsls r1, r1, #1 adds r0, r2, r1 ldr r1, [r0] ldr r0, [r3, #4] cmp r1, r0 bne _08081F20 movs r0, #1 b _08081F22 _08081F20: movs r0, #0 _08081F22: pop {pc} thumb_func_start sub_08081F24 sub_08081F24: @ 0x08081F24 push {r4, lr} adds r4, r0, #0 movs r1, #0x11 movs r2, #0x40 bl CreateFx adds r2, r0, #0 cmp r2, #0 beq _08081F50 ldrb r1, [r2, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2, #0x11] ldrh r0, [r2, #0x2e] adds r0, #7 strh r0, [r2, #0x2e] ldrh r0, [r2, #0x32] adds r0, #5 strh r0, [r2, #0x32] _08081F50: adds r0, r4, #0 movs r1, #0x11 movs r2, #0x40 bl CreateFx adds r2, r0, #0 cmp r2, #0 beq _08081F7A ldrb r1, [r2, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2, #0x11] ldrh r0, [r2, #0x2e] subs r0, #7 strh r0, [r2, #0x2e] ldrh r0, [r2, #0x32] adds r0, #5 strh r0, [r2, #0x32] _08081F7A: pop {r4, pc} thumb_func_start sub_08081F7C sub_08081F7C: @ 0x08081F7C push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r7, r1, #0 ldrb r0, [r4, #0xe] cmp r0, #0 beq _08081FF4 subs r1, r0, #1 strb r1, [r4, #0xe] lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #6 bls _08081FA4 ldr r0, [r4, #0x54] cmp r0, #0 beq _08081FF4 adds r1, r0, #0 adds r1, #0x63 movs r0, #0xfc strb r0, [r1] b _08081FF4 _08081FA4: lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #6 bne _08081FF4 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 adds r6, r4, #0 adds r6, #0x74 ldrh r1, [r6] adds r5, r4, #0 adds r5, #0x38 ldrb r2, [r5] adds r0, r7, #0 bl sub_0807B314 adds r0, r4, #0 bl sub_08081F24 movs r0, #0x86 lsls r0, r0, #1 bl PlaySFX adds r2, r4, #0 adds r2, #0x70 ldrh r1, [r2] ldr r0, _08081FF0 @ =0x0000FFFF cmp r1, r0 beq _08081FEC adds r0, r1, #0 ldrh r1, [r6] ldrb r2, [r5] bl UpdateCollisionLayer _08081FEC: movs r0, #0 b _08081FF6 .align 2, 0 _08081FF0: .4byte 0x0000FFFF _08081FF4: movs r0, #1 _08081FF6: pop {r4, r5, r6, r7, pc} thumb_func_start sub_08081FF8 sub_08081FF8: @ 0x08081FF8 push {r4, r5, r6, lr} adds r4, r0, #0 ldr r1, [r4, #0x54] ldr r0, _08082038 @ =gLinkEntity cmp r1, r0 bne _08082036 adds r0, r1, #0 adds r1, r4, #0 bl sub_080045C4 adds r6, r0, #0 ldr r0, [r4, #0x54] movs r1, #0x80 lsls r1, r1, #2 adds r2, r6, #0 bl sub_080044AE movs r5, #0 ldr r4, _0808203C @ =gUnk_03004040 _0808201E: ldr r0, [r4] cmp r0, #0 beq _0808202E movs r1, #0x80 lsls r1, r1, #2 adds r2, r6, #0 bl sub_080044AE _0808202E: adds r4, #4 adds r5, #1 cmp r5, #2 bls _0808201E _08082036: pop {r4, r5, r6, pc} .align 2, 0 _08082038: .4byte gLinkEntity _0808203C: .4byte gUnk_03004040 thumb_func_start sub_08082040 sub_08082040: @ 0x08082040 push {lr} ldr r2, _08082054 @ =gUnk_0811EE5C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08082054: .4byte gUnk_0811EE5C thumb_func_start sub_08082058 sub_08082058: @ 0x08082058 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r4, #0x11] ldrb r1, [r4, #0x10] movs r0, #0x20 orrs r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #1 movs r2, #3 bl sub_080AE008 adds r0, r4, #0 bl sub_08082098 pop {r4, pc} .align 2, 0 thumb_func_start sub_08082098 sub_08082098: @ 0x08082098 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldr r0, _08082100 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _080820AC bl sub_0805E780 _080820AC: ldr r5, _08082104 @ =gLinkEntity adds r0, r4, #0 bl sub_08079BD8 ldrb r1, [r4, #0x1b] movs r0, #0x3f ands r0, r1 movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x1b] ldrb r1, [r5, #0x1a] lsls r1, r1, #0x1c lsrs r1, r1, #0x1c ldrb r2, [r4, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x1a] ldrb r1, [r5, #0x14] movs r0, #0xe ands r0, r1 strb r0, [r4, #0x14] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] ldrb r0, [r5, #0x14] lsrs r3, r0, #1 adds r7, r3, #0 ldrb r0, [r5, #0xc] cmp r0, #0x14 beq _08082122 cmp r0, #0x14 bgt _08082108 cmp r0, #0xa beq _0808212A b _0808212E .align 2, 0 _08082100: .4byte gLinkState _08082104: .4byte gLinkEntity _08082108: cmp r0, #0x16 beq _08082112 cmp r0, #0x18 beq _08082126 b _0808212E _08082112: ldrb r0, [r4, #0x14] movs r3, #0xd adds r5, r4, #0 adds r5, #0x58 cmp r0, #2 bne _080821F2 movs r3, #0xe b _080821F2 _08082122: movs r3, #0xc b _080821EE _08082126: adds r3, #0xf b _080821EE _0808212A: movs r3, #0x13 b _080821EE _0808212E: adds r0, r5, #0 adds r0, #0x42 ldrb r0, [r0] cmp r0, #0 beq _0808213E adds r3, r7, #0 adds r3, #8 b _080821EE _0808213E: ldr r2, _0808215C @ =gLinkState ldrb r1, [r2, #2] adds r6, r1, #0 cmp r6, #0 beq _08082160 movs r0, #0x10 ands r0, r1 adds r5, r4, #0 adds r5, #0x58 cmp r0, #0 bne _080821F2 adds r3, r7, #0 adds r3, #0x19 b _080821F2 .align 2, 0 _0808215C: .4byte gLinkState _08082160: adds r0, r2, #0 adds r0, #0xa8 ldrb r0, [r0] cmp r0, #1 beq _0808216E cmp r0, #0x19 bne _080821C8 _0808216E: adds r3, r7, #4 adds r0, r4, #0 adds r0, #0x58 ldrb r1, [r0] adds r5, r0, #0 cmp r1, r3 beq _08082180 str r6, [r4, #0x34] b _080821BA _08082180: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] movs r7, #0xff lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _080821F2 adds r2, r4, #0 adds r2, #0x63 movs r1, #0 ldrsb r1, [r2, r1] movs r0, #1 rsbs r0, r0, #0 cmp r1, r0 beq _080821C0 cmp r1, r0 bgt _080821AC subs r0, #1 cmp r1, r0 beq _080821B4 b _080821F2 _080821AC: cmp r1, #0 bne _080821F2 movs r0, #0xfe b _080821B8 _080821B4: ldrb r0, [r2] orrs r0, r7 _080821B8: strb r0, [r2] _080821BA: movs r0, #6 strb r0, [r4, #0xe] b _080821F2 _080821C0: strb r6, [r2] movs r0, #3 strb r0, [r4, #0xe] b _080821F2 _080821C8: adds r0, r2, #0 adds r0, #0x26 ldrb r2, [r0] adds r1, r2, #0 cmp r1, #0 beq _080821E8 movs r0, #0x80 ands r0, r2 adds r3, r7, #0 adds r3, #0x14 adds r5, r4, #0 adds r5, #0x58 cmp r0, #0 beq _080821F2 movs r3, #0x18 b _080821F2 _080821E8: adds r0, r4, #0 adds r0, #0x63 strb r1, [r0] _080821EE: adds r5, r4, #0 adds r5, #0x58 _080821F2: ldrb r0, [r5] cmp r0, r3 beq _08082202 adds r0, r4, #0 adds r1, r3, #0 bl LoadAnimation b _08082208 _08082202: adds r0, r4, #0 bl sub_080042B8 _08082208: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0808220C sub_0808220C: @ 0x0808220C push {r4, lr} adds r4, r0, #0 ldr r1, _08082228 @ =gUnk_0811F090 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r4, #0x41 movs r0, #0 strb r0, [r4] pop {r4, pc} .align 2, 0 _08082228: .4byte gUnk_0811F090 thumb_func_start sub_0808222C sub_0808222C: @ 0x0808222C push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r4, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #1 bne _0808224C adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0808224C bl sub_0805E780 _0808224C: movs r2, #1 strb r2, [r4, #0xc] ldr r0, _08082308 @ =gUnk_080FD338 str r0, [r4, #0x48] movs r1, #0 movs r0, #0x80 strh r0, [r4, #0x24] ldrh r0, [r4, #0x32] adds r0, #3 strh r0, [r4, #0x32] strb r1, [r4, #0x16] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r0, r4, #0 adds r0, #0x45 strb r2, [r0] adds r1, r4, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #3 movs r0, #0x6e strb r0, [r1] subs r1, #4 movs r0, #0x84 strb r0, [r1] movs r0, #0x12 strb r0, [r4, #0x1c] adds r5, r4, #0 adds r5, #0x38 ldrb r0, [r5] cmp r0, #0 bne _08082298 adds r0, r4, #0 bl sub_08016A30 _08082298: movs r1, #0x2e ldrsh r0, [r4, r1] ldr r7, _0808230C @ =gRoomControls ldrh r1, [r7, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r6, #0x3f ands r0, r6 movs r2, #0x32 ldrsh r1, [r4, r2] ldrh r2, [r7, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r6 lsls r1, r1, #6 orrs r0, r1 ldrb r1, [r5] bl sub_080001DA adds r1, r4, #0 adds r1, #0x70 strh r0, [r1] lsls r0, r0, #0x10 lsrs r0, r0, #0x10 movs r1, #0x80 lsls r1, r1, #7 mov r8, r1 cmp r0, r8 bne _080822D6 bl sub_0805E780 _080822D6: movs r2, #0x2e ldrsh r1, [r4, r2] ldrh r0, [r7, #6] subs r1, r1, r0 asrs r1, r1, #4 ands r1, r6 movs r2, #0x32 ldrsh r0, [r4, r2] ldrh r2, [r7, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r6 lsls r0, r0, #6 orrs r1, r0 ldrb r2, [r5] mov r0, r8 bl UpdateCollisionLayer adds r0, r4, #0 movs r1, #5 bl UpdateSprite pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08082308: .4byte gUnk_080FD338 _0808230C: .4byte gRoomControls thumb_func_start sub_08082310 sub_08082310: @ 0x08082310 push {r4, r5, r6, r7, lr} adds r5, r0, #0 adds r0, #0x41 ldrb r0, [r0] movs r6, #0x7f adds r1, r6, #0 ands r1, r0 cmp r1, #0x13 beq _08082342 cmp r1, #0x1d beq _0808234C adds r0, r5, #0 bl sub_080002A0 adds r4, r0, #0 movs r0, #0x80 lsls r0, r0, #7 cmp r4, r0 bne _08082338 b _080824F0 _08082338: adds r0, #1 cmp r4, r0 bhs _08082340 b _08082484 _08082340: b _080823C4 _08082342: movs r1, #0 movs r0, #3 strb r0, [r5, #0xc] strb r1, [r5, #0xd] b _080824F6 _0808234C: adds r0, r5, #0 adds r0, #0x70 ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _080823C0 @ =gRoomControls ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r7, #0x32 ldrsh r2, [r5, r7] ldrh r3, [r3, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 adds r2, r5, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer movs r1, #0 movs r0, #5 strb r0, [r5, #0xc] movs r0, #0xa8 lsls r0, r0, #0xa str r0, [r5, #0x20] adds r0, r5, #0 adds r0, #0x63 strb r1, [r0] ldrb r1, [r5, #0x18] movs r0, #0x31 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x10 orrs r0, r1 strb r0, [r5, #0x18] adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] ldrb r1, [r5, #0x10] adds r0, r6, #0 ands r0, r1 strb r0, [r5, #0x10] adds r0, r5, #0 bl sub_08082824 b _080824F6 .align 2, 0 _080823C0: .4byte gRoomControls _080823C4: ldr r0, _080823D4 @ =0x00004004 cmp r4, r0 bls _080823D8 adds r0, #0x63 cmp r4, r0 beq _08082448 b _08082484 .align 2, 0 _080823D4: .4byte 0x00004004 _080823D8: ldr r1, _08082438 @ =0xFFFFBFFF adds r0, r4, r1 lsls r0, r0, #3 strb r0, [r5, #0x15] movs r0, #0x20 strb r0, [r5, #0xe] movs r0, #4 strb r0, [r5, #0xc] ldr r0, _0808243C @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _08082400 ldrh r0, [r5, #0x24] lsls r0, r0, #0x10 asrs r0, r0, #0x11 strh r0, [r5, #0x24] movs r0, #0x40 strb r0, [r5, #0xe] _08082400: adds r0, r5, #0 adds r0, #0x70 ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08082440 @ =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 UpdateCollisionLayer ldr r0, _08082444 @ =0x0000010F bl sub_08004488 b _080824F6 .align 2, 0 _08082438: .4byte 0xFFFFBFFF _0808243C: .4byte gLinkState _08082440: .4byte gRoomControls _08082444: .4byte 0x0000010F _08082448: adds r0, r5, #0 adds r0, #0x70 ldrh r0, [r0] movs r7, #0x2e ldrsh r1, [r5, r7] ldr r3, _08082480 @ =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 UpdateCollisionLayer bl sub_0805E780 b _080824F6 .align 2, 0 _08082480: .4byte gRoomControls _08082484: adds r0, r5, #0 bl sub_080002B8 cmp r0, #0xd bne _0808249A adds r0, r5, #0 movs r1, #0 movs r2, #0 bl CreateFx b _080824D8 _0808249A: ldr r0, _080824E4 @ =0x00004005 cmp r4, r0 bne _080824D8 ldr r0, _080824E8 @ =gLinkState adds r0, #0xab movs r1, #4 strb r1, [r0] adds r0, r5, #0 adds r0, #0x70 ldrh r0, [r0] movs r7, #0x2e ldrsh r1, [r5, r7] ldr r3, _080824EC @ =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 UpdateCollisionLayer _080824D8: adds r0, r5, #0 movs r1, #0 bl sub_08082850 b _080824F6 .align 2, 0 _080824E4: .4byte 0x00004005 _080824E8: .4byte gLinkState _080824EC: .4byte gRoomControls _080824F0: adds r0, r5, #0 bl sub_08078930 _080824F6: pop {r4, r5, r6, r7, pc} thumb_func_start sub_080824F8 sub_080824F8: @ 0x080824F8 push {lr} ldr r2, _0808250C @ =gUnk_0811F0A8 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808250C: .4byte gUnk_0811F0A8 thumb_func_start sub_08082510 sub_08082510: @ 0x08082510 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r1, [r5, #0x10] movs r0, #0x80 movs r2, #0 orrs r0, r1 strb r0, [r5, #0x10] ldr r0, _08082578 @ =gUnk_080FD340 str r0, [r5, #0x48] adds r1, r5, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #3 movs r0, #1 strb r0, [r1] ldr r0, _0808257C @ =gLinkEntity adds r0, #0x3b ldrb r0, [r0] subs r1, #4 strb r0, [r1] adds r0, r5, #0 adds r0, #0x63 strb r2, [r0] adds r0, #0xd ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08082580 @ =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 UpdateCollisionLayer ldrb r0, [r5, #0xd] adds r0, #1 strb r0, [r5, #0xd] pop {r4, r5, r6, pc} .align 2, 0 _08082578: .4byte gUnk_080FD340 _0808257C: .4byte gLinkEntity _08082580: .4byte gRoomControls thumb_func_start nullsub_511 nullsub_511: @ 0x08082584 bx lr .align 2, 0 thumb_func_start sub_08082588 sub_08082588: @ 0x08082588 adds r0, #0x29 ldrb r2, [r0] movs r1, #0x39 rsbs r1, r1, #0 ands r1, r2 movs r2, #0x18 orrs r1, r2 strb r1, [r0] bx lr .align 2, 0 thumb_func_start sub_0808259C sub_0808259C: @ 0x0808259C push {r4, lr} adds r4, r0, #0 bl sub_080043E8 cmp r0, #2 beq _080825B8 cmp r0, #2 bhi _080825B2 cmp r0, #1 beq _080825BE b _080825D0 _080825B2: cmp r0, #3 beq _080825C4 b _080825D0 _080825B8: adds r0, r4, #0 movs r1, #0xb b _080825C8 _080825BE: adds r0, r4, #0 movs r1, #0 b _080825C8 _080825C4: adds r0, r4, #0 movs r1, #0xc _080825C8: movs r2, #0 bl CreateFx b _080825E0 _080825D0: ldr r1, _080825DC @ =gLinkEntity adds r0, r4, #0 bl sub_08082850 b _080825E4 .align 2, 0 _080825DC: .4byte gLinkEntity _080825E0: bl sub_0805E780 _080825E4: pop {r4, pc} .align 2, 0 thumb_func_start sub_080825E8 sub_080825E8: @ 0x080825E8 push {lr} bl sub_0805E780 pop {pc} thumb_func_start sub_080825F0 sub_080825F0: @ 0x080825F0 push {lr} adds r1, r0, #0 ldr r0, _08082604 @ =gLinkState ldrb r0, [r0, #5] cmp r0, #0 bne _08082602 adds r0, r1, #0 bl sub_08082608 _08082602: pop {pc} .align 2, 0 _08082604: .4byte gLinkState thumb_func_start sub_08082608 sub_08082608: @ 0x08082608 movs r2, #0 movs r1, #1 strb r1, [r0, #0xc] strb r2, [r0, #0xd] bx lr .align 2, 0 thumb_func_start sub_08082614 sub_08082614: @ 0x08082614 push {r4, r5, r6, r7, lr} adds r5, r0, #0 bl sub_0800445C ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff beq _08082638 adds r0, r5, #0 bl sub_0806F69C adds r0, r5, #0 bl sub_08016A6C b _080826DC _08082638: adds r0, r5, #0 bl sub_0800442E cmp r0, #0 bne _080826DC movs r0, #1 strb r0, [r5, #0xc] ldr r0, _080826A4 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _08082658 ldrh r0, [r5, #0x24] lsls r0, r0, #1 strh r0, [r5, #0x24] _08082658: movs r1, #0x2e ldrsh r0, [r5, r1] ldr r2, _080826A8 @ =gRoomControls ldrh r1, [r2, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r3, #0x3f ands r0, r3 movs r4, #0x32 ldrsh r1, [r5, r4] ldrh r2, [r2, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r3 lsls r1, r1, #6 orrs r0, r1 adds r4, r5, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_080001DA adds r1, r5, #0 adds r1, #0x70 strh r0, [r1] adds r0, r5, #0 bl sub_080002A0 adds r6, r4, #0 cmp r0, #0x72 bhi _080826AC cmp r0, #0x71 blo _080826AC adds r0, r5, #0 movs r1, #0 bl sub_08082850 b _080826DC .align 2, 0 _080826A4: .4byte gLinkState _080826A8: .4byte gRoomControls _080826AC: movs r0, #0x80 lsls r0, r0, #7 movs r7, #0x2e ldrsh r1, [r5, r7] ldr r3, _080826E0 @ =gRoomControls ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r7, #0x32 ldrsh r2, [r5, r7] ldrh r3, [r3, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 ldrb r2, [r6] bl UpdateCollisionLayer adds r0, r5, #0 bl sub_08078930 _080826DC: pop {r4, r5, r6, r7, pc} .align 2, 0 _080826E0: .4byte gRoomControls thumb_func_start sub_080826E4 sub_080826E4: @ 0x080826E4 push {lr} ldr r2, _080826F8 @ =gUnk_0811F0C4 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080826F8: .4byte gUnk_0811F0C4 thumb_func_start sub_080826FC sub_080826FC: @ 0x080826FC movs r2, #0 movs r1, #1 strb r1, [r0, #0xd] movs r1, #0x30 strb r1, [r0, #0x1d] strb r2, [r0, #0xe] bx lr .align 2, 0 thumb_func_start sub_0808270C sub_0808270C: @ 0x0808270C push {r4, r5, r6, lr} adds r5, r0, #0 ldr r0, _08082768 @ =gLinkState ldrb r1, [r0, #0x1c] movs r0, #0xf ands r0, r1 cmp r0, #1 bne _0808272A adds r0, r5, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x13 beq _08082770 _0808272A: adds r1, r5, #0 adds r1, #0x62 movs r0, #0 strb r0, [r1] movs r0, #1 strb r0, [r5, #0xc] movs r0, #0x80 lsls r0, r0, #7 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _0808276C @ =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 UpdateCollisionLayer b _08082776 .align 2, 0 _08082768: .4byte gLinkState _0808276C: .4byte gRoomControls _08082770: adds r0, r5, #0 bl sub_0806F4E8 _08082776: pop {r4, r5, r6, pc} thumb_func_start sub_08082778 sub_08082778: @ 0x08082778 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r1, [r5, #0xe] cmp r1, #0 bne _080827C4 movs r0, #1 strb r0, [r5, #0xe] adds r0, r5, #0 adds r0, #0x62 strb r1, [r0] adds r1, r5, #0 adds r1, #0x63 movs r0, #0xfe strb r0, [r1] adds r0, r5, #0 adds r0, #0x70 ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _080827E8 @ =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 UpdateCollisionLayer _080827C4: ldr r0, _080827EC @ =gLinkState ldrb r1, [r0, #0x1c] movs r0, #0xf ands r0, r1 cmp r0, #1 bne _080827DE adds r0, r5, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x13 beq _080827F0 _080827DE: adds r0, r5, #0 movs r1, #0 bl sub_08082850 b _080827F6 .align 2, 0 _080827E8: .4byte gRoomControls _080827EC: .4byte gLinkState _080827F0: adds r0, r5, #0 bl sub_0806F3E4 _080827F6: pop {r4, r5, r6, pc} thumb_func_start sub_080827F8 sub_080827F8: @ 0x080827F8 push {lr} adds r1, r0, #0 ldr r0, _08082810 @ =gLinkState ldrb r0, [r0, #0x1c] cmp r0, #0 bne _0808280C adds r0, r1, #0 movs r1, #0 bl sub_08082850 _0808280C: pop {pc} .align 2, 0 _08082810: .4byte gLinkState thumb_func_start nullsub_512 nullsub_512: @ 0x08082814 bx lr .align 2, 0 thumb_func_start sub_08082818 sub_08082818: @ 0x08082818 push {lr} movs r1, #0 bl sub_08082850 pop {pc} .align 2, 0 thumb_func_start sub_08082824 sub_08082824: @ 0x08082824 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x20] cmp r0, #0 bge _08082836 ldrb r0, [r4, #0x18] movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x18] _08082836: movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _0808284C adds r0, r4, #0 movs r1, #0 bl sub_08082850 _0808284C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08082850 sub_08082850: @ 0x08082850 push {r4, r5, lr} adds r4, r0, #0 adds r5, r1, #0 ldrb r1, [r4, #0xa] adds r0, #0x7d ldrb r2, [r0] ldrb r3, [r4, #0xb] adds r0, r4, #0 bl sub_0808288C adds r2, r0, #0 adds r0, r4, #0 movs r1, #5 bl CreateFx cmp r0, #0 beq _08082874 str r5, [r0, #0x50] _08082874: ldrb r0, [r4, #0xb] cmp r0, #1 bne _08082884 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 _08082884: bl sub_0805E780 pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0808288C sub_0808288C: @ 0x0808288C push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r7, r0, #0 adds r4, r1, #0 adds r5, r2, #0 mov r8, r3 movs r6, #0 cmp r4, #0 beq _080828A6 cmp r4, #0xff bne _080828AA b _080828D6 _080828A6: movs r6, #0x80 b _080828D6 _080828AA: adds r0, r7, #0 movs r1, #0 adds r2, r4, #0 adds r3, r5, #0 bl CreateObjectWithParent adds r2, r0, #0 cmp r2, #0 beq _080828D6 mov r0, r8 cmp r0, #2 bne _080828D4 movs r0, #5 strb r0, [r2, #0xe] adds r0, r7, #0 adds r0, #0x86 ldrh r1, [r0] adds r0, r2, #0 adds r0, #0x86 strh r1, [r0] b _080828D6 _080828D4: strb r6, [r2, #0xe] _080828D6: adds r0, r6, #0 pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_080828E0 sub_080828E0: @ 0x080828E0 push {lr} adds r2, r0, #0 ldrb r1, [r2, #0x10] movs r0, #2 ands r0, r1 cmp r0, #0 beq _080828F8 ldr r0, _080828F4 @ =gUnk_0811F15C b _08082900 .align 2, 0 _080828F4: .4byte gUnk_0811F15C _080828F8: ldrb r0, [r2, #0xa] cmp r0, #0 bne _08082914 ldr r0, _08082910 @ =gUnk_0811F14C _08082900: ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 b _08082924 .align 2, 0 _08082910: .4byte gUnk_0811F14C _08082914: ldr r0, _08082928 @ =gUnk_0811F154 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 _08082924: pop {pc} .align 2, 0 _08082928: .4byte gUnk_0811F154 thumb_func_start sub_0808292C sub_0808292C: @ 0x0808292C push {r4, r5, lr} adds r4, r0, #0 ldrb r1, [r4, #0x11] movs r3, #0x10 rsbs r3, r3, #0 adds r0, r3, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r4, #0x11] ldr r5, _080829C8 @ =gLinkEntity ldrb r1, [r5, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r4, #0x19] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r5, #0 adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d lsrs r1, r1, #0x1d subs r1, #1 movs r0, #0x29 adds r0, r0, r4 mov ip, r0 movs r0, #7 ands r1, r0 mov r0, ip ldrb r2, [r0] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 mov r1, ip strb r0, [r1] ldrb r0, [r5, #0x1a] lsls r0, r0, #0x1c lsrs r0, r0, #0x1c ldrb r1, [r4, #0x1a] ands r3, r1 orrs r3, r0 strb r3, [r4, #0x1a] adds r0, r5, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] movs r0, #1 strb r0, [r4, #0xc] ldrb r0, [r5, #0x14] cmp r0, #2 bne _080829A4 ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x18] _080829A4: adds r0, r4, #0 movs r1, #1 movs r2, #3 bl sub_080AE008 ldrb r0, [r4, #0xa] cmp r0, #0 bne _080829CC movs r0, #7 strb r0, [r4, #0xf] adds r0, r4, #0 movs r1, #7 bl LoadAnimation movs r0, #0xf3 bl PlaySFX b _080829E2 .align 2, 0 _080829C8: .4byte gLinkEntity _080829CC: movs r0, #0 strb r0, [r4, #0xe] movs r0, #0xa strb r0, [r4, #0xf] ldrh r0, [r4, #0x32] subs r0, #0xe strh r0, [r4, #0x32] adds r0, r4, #0 movs r1, #0x14 bl LoadAnimation _080829E2: pop {r4, r5, pc} thumb_func_start sub_080829E4 sub_080829E4: @ 0x080829E4 push {r4, r5, lr} adds r5, r0, #0 ldr r0, _08082A10 @ =gLinkEntity ldrb r1, [r0, #0x1a] lsls r1, r1, #0x1c lsrs r1, r1, #0x1c ldrb r2, [r5, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r5, #0x1a] ldr r3, _08082A14 @ =gTextBox ldrb r0, [r3] movs r1, #0x7f ands r1, r0 cmp r1, #0 bne _08082A18 adds r0, r5, #0 bl sub_0805E7BC b _08082AB4 .align 2, 0 _08082A10: .4byte gLinkEntity _08082A14: .4byte gTextBox _08082A18: cmp r1, #5 beq _08082A9C ldrb r1, [r3, #1] adds r0, r1, #0 cmp r0, #0xa beq _08082A30 cmp r0, #0 beq _08082A30 movs r0, #0xf ands r0, r1 cmp r0, #9 bls _08082A4A _08082A30: adds r1, r5, #0 adds r1, #0x58 ldrb r2, [r5, #0xf] movs r0, #3 ldrb r1, [r1] orrs r2, r0 cmp r1, r2 beq _08082A9C adds r0, r5, #0 adds r1, r2, #0 bl LoadAnimation b _08082AB4 _08082A4A: movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08082A78 adds r0, r5, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x90 ands r0, r1 cmp r0, #0 beq _08082A9C bl Random ldr r4, _08082A74 @ =gUnk_0811F16C movs r1, #9 bl __modsi3 adds r0, r0, r4 ldrb r0, [r0] strb r0, [r5, #0xf] b _08082A8C .align 2, 0 _08082A74: .4byte gUnk_0811F16C _08082A78: adds r2, r5, #0 adds r2, #0x58 ldr r1, _08082A98 @ =gUnk_0811F16C ldrb r0, [r3, #1] adds r0, r0, r1 ldrb r1, [r0] ldrb r0, [r2] cmp r0, r1 beq _08082A9C strb r1, [r5, #0xf] _08082A8C: ldrb r1, [r5, #0xf] adds r0, r5, #0 bl LoadAnimation b _08082AB4 .align 2, 0 _08082A98: .4byte gUnk_0811F16C _08082A9C: adds r0, r5, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #7 bls _08082AAA movs r0, #1 b _08082AAC _08082AAA: movs r0, #0 _08082AAC: strb r0, [r5, #0xe] adds r0, r5, #0 bl sub_080042B8 _08082AB4: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08082AB8 sub_08082AB8: @ 0x08082AB8 push {r4, r5, lr} adds r4, r0, #0 ldr r0, _08082B10 @ =gLinkState ldr r0, [r0, #0x30] movs r5, #0x80 ands r0, r5 cmp r0, #0 beq _08082ACC bl sub_0805E780 _08082ACC: adds r0, r4, #0 bl sub_080042B8 ldrb r0, [r4, #0xd] cmp r0, #0 bne _08082B5C ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _08082B98 ldrb r0, [r4, #0xe] adds r0, #1 strb r0, [r4, #0xe] movs r0, #0xa strb r0, [r4, #0xf] ldrb r0, [r4, #0xe] subs r5, r0, #1 adds r0, r4, #0 movs r1, #0x79 adds r2, r5, #0 movs r3, #0 bl CreateObjectWithParent adds r1, r0, #0 str r1, [r4, #0x54] cmp r1, #0 beq _08082B18 cmp r5, #0 bne _08082B14 str r1, [r4, #0x50] b _08082B18 .align 2, 0 _08082B10: .4byte gLinkState _08082B14: ldr r0, [r4, #0x50] str r0, [r1, #0x50] _08082B18: ldrb r0, [r4, #0xe] cmp r0, #6 bne _08082B36 movs r0, #3 strb r0, [r4, #0xd] movs r0, #0x3c strb r0, [r4, #0xe] ldr r1, [r4, #0x50] movs r0, #1 strb r0, [r1, #0xb] adds r0, r4, #0 movs r1, #0x1c bl LoadAnimation b _08082B98 _08082B36: ldr r1, _08082B58 @ =gUnk_0811F178 ldrb r0, [r4, #0xe] subs r0, #1 lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl LoadAnimation ldrb r0, [r4, #0xe] cmp r0, #2 bls _08082B98 ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x18] b _08082B98 .align 2, 0 _08082B58: .4byte gUnk_0811F178 _08082B5C: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] adds r0, r5, #0 ands r0, r1 cmp r0, #0 beq _08082B98 bl Random movs r1, #3 ands r0, r1 strb r0, [r4, #0xe] cmp r0, #0 beq _08082B98 bl Random movs r1, #1 ands r1, r0 lsls r1, r1, #6 ldrb r2, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] ldrb r1, [r4, #0xe] adds r1, #0x1b adds r0, r4, #0 bl LoadAnimation _08082B98: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08082B9C sub_08082B9C: @ 0x08082B9C push {r4, r5, r6, lr} adds r6, r0, #0 ldrb r1, [r6, #0x11] movs r2, #0x10 rsbs r2, r2, #0 adds r0, r2, #0 ands r0, r1 movs r1, #2 orrs r0, r1 strb r0, [r6, #0x11] ldr r5, _08082C34 @ =gLinkEntity ldrb r0, [r5, #0x1a] lsls r0, r0, #0x1c lsrs r0, r0, #0x1c ldrb r1, [r6, #0x1a] ands r2, r1 orrs r2, r0 strb r2, [r6, #0x1a] adds r0, r5, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r6, #0 adds r0, #0x38 movs r4, #0 strb r1, [r0] adds r2, r6, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] ldrb r1, [r6, #0x18] movs r0, #0x31 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x10 orrs r0, r1 strb r0, [r6, #0x18] movs r0, #1 strb r0, [r6, #0xc] adds r0, r6, #0 movs r1, #1 movs r2, #3 bl sub_080AE008 adds r0, r6, #0 movs r1, #0xc bl LoadAnimation adds r0, r6, #0 adds r0, #0x82 strh r4, [r0] adds r4, r6, #0 adds r4, #0x84 ldr r1, [r4] adds r0, r6, #0 bl sub_0807DF74 ldr r1, [r4] adds r0, r6, #0 bl sub_08082D20 ldrb r0, [r5, #0x14] cmp r0, #2 bne _08082C2C ldrb r0, [r6, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r6, #0x18] _08082C2C: adds r0, r6, #0 bl sub_08082C5C pop {r4, r5, r6, pc} .align 2, 0 _08082C34: .4byte gLinkEntity thumb_func_start sub_08082C38 sub_08082C38: @ 0x08082C38 push {r4, r5, lr} adds r5, r0, #0 adds r4, r5, #0 adds r4, #0x84 ldr r1, [r4] bl sub_0807DF74 ldr r1, [r4] adds r0, r5, #0 bl sub_08082D20 ldrb r0, [r5, #0xc] cmp r0, #1 bhi _08082C5A adds r0, r5, #0 bl sub_08082C5C _08082C5A: pop {r4, r5, pc} thumb_func_start sub_08082C5C sub_08082C5C: @ 0x08082C5C push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xd] cmp r0, #4 bhi _08082D0C lsls r0, r0, #2 ldr r1, _08082C70 @ =_08082C74 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08082C70: .4byte _08082C74 _08082C74: @ jump table .4byte _08082C88 @ case 0 .4byte _08082C9C @ case 1 .4byte _08082CB0 @ case 2 .4byte _08082CE4 @ case 3 .4byte _08082CF8 @ case 4 _08082C88: adds r0, r5, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0x17 beq _08082D0C adds r0, r5, #0 movs r1, #0x17 bl LoadAnimation b _08082D1C _08082C9C: adds r0, r5, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0x18 beq _08082D0C adds r0, r5, #0 movs r1, #0x18 bl LoadAnimation b _08082D1C _08082CB0: adds r0, r5, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08082D0C bl Random adds r4, r0, #0 bl Random adds r1, r0, #0 ldr r2, _08082CE0 @ =gUnk_0811F18C movs r0, #3 ands r4, r0 adds r4, r4, r2 ands r1, r0 ldrb r4, [r4] adds r1, r1, r4 adds r0, r5, #0 bl LoadAnimation b _08082D1C .align 2, 0 _08082CE0: .4byte gUnk_0811F18C _08082CE4: adds r0, r5, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0x13 beq _08082D0C adds r0, r5, #0 movs r1, #0x13 bl LoadAnimation b _08082D1C _08082CF8: adds r0, r5, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0x1a beq _08082D0C adds r0, r5, #0 movs r1, #0x1a bl LoadAnimation b _08082D1C _08082D0C: movs r1, #0x80 lsls r1, r1, #6 adds r0, r5, #0 bl sub_08003FC4 adds r0, r5, #0 bl sub_080042B8 _08082D1C: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08082D20 sub_08082D20: @ 0x08082D20 push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r3, r1, #0 ldr r0, [r3, #8] cmp r0, #0 beq _08082E10 movs r6, #0 movs r5, #1 movs r0, #4 rsbs r0, r0, #0 mov ip, r0 _08082D36: ldr r1, [r3, #8] mvns r0, r1 adds r2, r0, #1 ands r2, r1 eors r1, r2 str r1, [r3, #8] cmp r2, #0x80 beq _08082DB4 cmp r2, #0x80 bhi _08082D66 cmp r2, #4 beq _08082D9E cmp r2, #4 bhi _08082D5C cmp r2, #1 beq _08082D96 cmp r2, #2 beq _08082D9A b _08082E0A _08082D5C: cmp r2, #8 beq _08082DA4 cmp r2, #0x40 beq _08082DDA b _08082E0A _08082D66: movs r0, #0x80 lsls r0, r0, #0xd cmp r2, r0 beq _08082DDE cmp r2, r0 bhi _08082D84 movs r0, #0x80 lsls r0, r0, #1 cmp r2, r0 beq _08082DAA movs r0, #0x80 lsls r0, r0, #0xa cmp r2, r0 beq _08082DC0 b _08082E0A _08082D84: movs r0, #0x80 lsls r0, r0, #0xe cmp r2, r0 beq _08082DE6 movs r0, #0x80 lsls r0, r0, #0xf cmp r2, r0 beq _08082DF2 b _08082E0A _08082D96: strb r6, [r4, #0xd] b _08082E0A _08082D9A: strb r5, [r4, #0xd] b _08082E0A _08082D9E: movs r0, #2 strb r0, [r4, #0xd] b _08082E0A _08082DA4: movs r0, #3 strb r0, [r4, #0xd] b _08082E0A _08082DAA: ldrb r0, [r4, #0x18] mov r1, ip ands r0, r1 strb r0, [r4, #0x18] b _08082E0A _08082DB4: ldrb r0, [r4, #0x18] mov r7, ip ands r0, r7 orrs r0, r5 strb r0, [r4, #0x18] b _08082E0A _08082DC0: ldrb r0, [r4, #0x18] lsls r1, r0, #0x19 lsrs r1, r1, #0x1f eors r1, r5 ands r1, r5 lsls r1, r1, #6 movs r7, #0x41 rsbs r7, r7, #0 adds r2, r7, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] b _08082E0A _08082DDA: bl sub_0805E780 _08082DDE: movs r0, #2 strb r0, [r4, #0xc] strb r6, [r4, #0xd] b _08082E10 _08082DE6: movs r0, #4 strb r0, [r4, #0xd] adds r1, r4, #0 adds r1, #0x62 strb r0, [r1] b _08082E0A _08082DF2: movs r0, #3 strb r0, [r4, #0xc] strb r6, [r4, #0xd] adds r1, r4, #0 adds r1, #0x62 movs r0, #4 strb r0, [r1] adds r0, r4, #0 movs r1, #0x1b bl LoadAnimation b _08082E10 _08082E0A: ldr r0, [r3, #8] cmp r0, #0 bne _08082D36 _08082E10: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08082E14 sub_08082E14: @ 0x08082E14 push {r4, lr} adds r4, r0, #0 adds r0, #0x84 ldr r1, [r0] adds r0, r4, #0 bl sub_0807DF74 movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 ldrb r0, [r4, #0xd] cmp r0, #0 beq _08082E38 cmp r0, #1 beq _08082E44 b _08082E5E _08082E38: ldr r0, [r4, #0x20] cmp r0, #0 bge _08082E5E movs r0, #1 strb r0, [r4, #0xd] b _08082E5E _08082E44: movs r0, #0x36 ldrsh r1, [r4, r0] movs r0, #0xa rsbs r0, r0, #0 cmp r1, r0 ble _08082E5E ldr r0, _08082E68 @ =gUnk_02033280 ldr r1, [r0] movs r2, #2 orrs r1, r2 str r1, [r0] bl sub_0805E780 _08082E5E: adds r0, r4, #0 bl sub_080042B8 pop {r4, pc} .align 2, 0 _08082E68: .4byte gUnk_02033280 thumb_func_start sub_08082E6C sub_08082E6C: @ 0x08082E6C push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08082E98 movs r1, #0 movs r0, #1 strb r0, [r4, #0xc] strb r1, [r4, #0xd] adds r0, r4, #0 adds r0, #0x62 strb r1, [r0] adds r0, r4, #0 movs r1, #0x17 bl LoadAnimation _08082E98: pop {r4, pc} .align 2, 0 thumb_func_start sub_08082E9C sub_08082E9C: @ 0x08082E9C push {lr} ldr r2, _08082EB0 @ =gUnk_0811F624 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08082EB0: .4byte gUnk_0811F624 thumb_func_start sub_08082EB4 sub_08082EB4: @ 0x08082EB4 push {r4, r5, r6, lr} adds r4, r0, #0 ldr r0, _08082EE0 @ =gRoomControls ldrb r1, [r0, #4] adds r6, r0, #0 cmp r1, #0x11 bne _08082EF6 adds r0, r4, #0 bl sub_080AE068 ldr r1, _08082EE4 @ =0x000001C1 adds r0, r4, #0 bl sub_080ADF80 cmp r0, #0 bne _08082EE8 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] b _0808308E .align 2, 0 _08082EE0: .4byte gRoomControls _08082EE4: .4byte 0x000001C1 _08082EE8: ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #1 orrs r1, r0 strb r1, [r4, #0x18] _08082EF6: movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x20 strb r0, [r4, #0xe] movs r0, #0x80 strh r0, [r4, #0x24] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] subs r0, #0x88 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] movs r1, #0x2e ldrsh r0, [r4, r1] ldrh r1, [r6, #6] subs r0, r0, r1 asrs r5, r0, #4 movs r2, #0x3f ands r5, r2 movs r1, #0x32 ldrsh r0, [r4, r1] ldrh r1, [r6, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r5, r0 ldrb r1, [r4, #0xa] lsls r1, r1, #3 ldrh r0, [r4, #0x2e] adds r0, r1, r0 strh r0, [r4, #0x2e] ldrh r0, [r4, #0x32] adds r1, r1, r0 strh r1, [r4, #0x32] ldr r1, _08082F6C @ =gUnk_0811F64C ldrb r0, [r4, #0xa] lsls r0, r0, #2 adds r0, r0, r1 ldr r0, [r0] str r0, [r4, #0x48] adds r0, r4, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r5, #0 bl sub_080002B0 str r0, [r4, #0x68] ldrb r0, [r4, #0xa] cmp r0, #1 beq _08082F7A cmp r0, #1 bgt _08082F70 cmp r0, #0 beq _08082F76 b _08082FF0 .align 2, 0 _08082F6C: .4byte gUnk_0811F64C _08082F70: cmp r0, #2 beq _08082F9A b _08082FF0 _08082F76: adds r0, r5, #0 b _08082FE8 _08082F7A: adds r0, r5, #0 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #1 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x40 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x41 b _08082FE8 _08082F9A: adds r0, r5, #0 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #1 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #2 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x40 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x41 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x42 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x80 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x81 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x82 _08082FE8: adds r1, r4, #0 bl sub_080832D8 b _08083088 _08082FF0: adds r0, r5, #0 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #1 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #2 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #3 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x40 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x41 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x42 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x43 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x80 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x81 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x82 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0x83 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0xc0 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0xc1 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0xc2 adds r1, r4, #0 bl sub_080832D8 adds r0, r5, #0 adds r0, #0xc3 adds r1, r4, #0 bl sub_080832D8 _08083088: ldr r0, _08083090 @ =0x0000010F bl sub_08004488 _0808308E: pop {r4, r5, r6, pc} .align 2, 0 _08083090: .4byte 0x0000010F thumb_func_start sub_08083094 sub_08083094: @ 0x08083094 push {r4, lr} adds r4, r0, #0 bl sub_0806F69C adds r0, r4, #0 bl sub_0800445C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080830B4 adds r0, r4, #0 bl sub_080830B8 _080830B4: pop {r4, pc} .align 2, 0 thumb_func_start sub_080830B8 sub_080830B8: @ 0x080830B8 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} mov sb, r0 ldrb r5, [r0, #0xa] lsls r4, r5, #3 movs r1, #0x2e ldrsh r0, [r0, r1] subs r0, r0, r4 ldr r3, _080830FC @ =gRoomControls ldrh r1, [r3, #6] subs r0, r0, r1 asrs r7, r0, #4 movs r2, #0x3f ands r7, r2 mov r6, sb movs r1, #0x32 ldrsh r0, [r6, r1] subs r0, r0, r4 ldrh r1, [r3, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r7, r0 cmp r5, #1 beq _08083128 cmp r5, #1 bgt _08083100 cmp r5, #0 beq _08083106 b _080831EC .align 2, 0 _080830FC: .4byte gRoomControls _08083100: cmp r5, #2 beq _08083160 b _080831EC _08083106: mov r0, sb bl sub_0800442E cmp r0, #0 beq _08083112 b _080832C0 _08083112: ldr r0, _08083124 @ =0x00000365 mov r1, sb adds r1, #0x38 ldrb r2, [r1] adds r1, r7, #0 bl sub_0807B7D8 b _080832BA .align 2, 0 _08083124: .4byte 0x00000365 _08083128: mov r2, sb ldr r0, [r2, #0x68] mov r4, sb adds r4, #0x38 ldrb r2, [r4] adds r1, r7, #0 bl sub_0807B7D8 ldr r0, _08083158 @ =0x0000036F adds r1, r7, #1 ldrb r2, [r4] bl sub_0807B7D8 movs r0, #0xdc lsls r0, r0, #2 adds r1, r7, #0 adds r1, #0x40 ldrb r2, [r4] bl sub_0807B7D8 ldr r0, _0808315C @ =0x00000371 adds r1, r7, #0 adds r1, #0x41 b _080831CA .align 2, 0 _08083158: .4byte 0x0000036F _0808315C: .4byte 0x00000371 _08083160: mov r6, sb ldr r0, [r6, #0x68] mov r4, sb adds r4, #0x38 ldrb r2, [r4] adds r1, r7, #0 bl sub_0807B7D8 ldr r0, _080831D4 @ =0x00000372 adds r1, r7, #1 ldrb r2, [r4] bl sub_0807B7D8 ldr r0, _080831D8 @ =0x0000036F adds r1, r7, #2 ldrb r2, [r4] bl sub_0807B7D8 movs r0, #0xdd lsls r0, r0, #2 adds r1, r7, #0 adds r1, #0x40 ldrb r2, [r4] bl sub_0807B7D8 ldr r0, _080831DC @ =0x00000376 adds r1, r7, #0 adds r1, #0x41 ldrb r2, [r4] bl sub_0807B7D8 ldr r0, _080831E0 @ =0x00000375 adds r1, r7, #0 adds r1, #0x42 ldrb r2, [r4] bl sub_0807B7D8 movs r0, #0xdc lsls r0, r0, #2 adds r1, r7, #0 adds r1, #0x80 ldrb r2, [r4] bl sub_0807B7D8 ldr r0, _080831E4 @ =0x00000373 adds r1, r7, #0 adds r1, #0x81 ldrb r2, [r4] bl sub_0807B7D8 ldr r0, _080831E8 @ =0x00000371 adds r1, r7, #0 adds r1, #0x82 _080831CA: ldrb r2, [r4] bl sub_0807B7D8 b _080832BA .align 2, 0 _080831D4: .4byte 0x00000372 _080831D8: .4byte 0x0000036F _080831DC: .4byte 0x00000376 _080831E0: .4byte 0x00000375 _080831E4: .4byte 0x00000373 _080831E8: .4byte 0x00000371 _080831EC: mov r1, sb ldr r0, [r1, #0x68] mov r4, sb adds r4, #0x38 ldrb r2, [r4] adds r1, r7, #0 bl sub_0807B7D8 ldr r5, _080832C8 @ =0x00000372 adds r1, r7, #1 ldrb r2, [r4] adds r0, r5, #0 bl sub_0807B7D8 adds r1, r7, #2 ldrb r2, [r4] adds r0, r5, #0 bl sub_0807B7D8 ldr r0, _080832CC @ =0x0000036F adds r1, r7, #3 ldrb r2, [r4] bl sub_0807B7D8 movs r2, #0xdd lsls r2, r2, #2 mov r8, r2 adds r1, r7, #0 adds r1, #0x40 ldrb r2, [r4] mov r0, r8 bl sub_0807B7D8 adds r5, #4 adds r1, r7, #0 adds r1, #0x41 ldrb r2, [r4] adds r0, r5, #0 bl sub_0807B7D8 adds r1, r7, #0 adds r1, #0x42 ldrb r2, [r4] adds r0, r5, #0 bl sub_0807B7D8 ldr r6, _080832D0 @ =0x00000375 adds r1, r7, #0 adds r1, #0x43 ldrb r2, [r4] adds r0, r6, #0 bl sub_0807B7D8 adds r1, r7, #0 adds r1, #0x80 ldrb r2, [r4] mov r0, r8 bl sub_0807B7D8 adds r1, r7, #0 adds r1, #0x81 ldrb r2, [r4] adds r0, r5, #0 bl sub_0807B7D8 adds r1, r7, #0 adds r1, #0x82 ldrb r2, [r4] adds r0, r5, #0 bl sub_0807B7D8 adds r1, r7, #0 adds r1, #0x83 ldrb r2, [r4] adds r0, r6, #0 bl sub_0807B7D8 movs r0, #0xdc lsls r0, r0, #2 adds r1, r7, #0 adds r1, #0xc0 ldrb r2, [r4] bl sub_0807B7D8 subs r5, #3 adds r1, r7, #0 adds r1, #0xc1 ldrb r2, [r4] adds r0, r5, #0 bl sub_0807B7D8 adds r1, r7, #0 adds r1, #0xc2 ldrb r2, [r4] adds r0, r5, #0 bl sub_0807B7D8 ldr r0, _080832D4 @ =0x00000371 adds r1, r7, #0 adds r1, #0xc3 ldrb r2, [r4] bl sub_0807B7D8 _080832BA: mov r0, sb bl sub_0805E7BC _080832C0: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 _080832C8: .4byte 0x00000372 _080832CC: .4byte 0x0000036F _080832D0: .4byte 0x00000375 _080832D4: .4byte 0x00000371 thumb_func_start sub_080832D8 sub_080832D8: @ 0x080832D8 push {lr} adds r3, r0, #0 adds r2, r1, #0 adds r2, #0x38 ldrb r0, [r2] cmp r0, #2 beq _080832FC ldrb r1, [r1, #0x15] movs r0, #8 ands r0, r1 cmp r0, #0 beq _080832F6 ldrb r2, [r2] movs r0, #0x21 b _0808330A _080832F6: ldrb r2, [r2] movs r0, #0x20 b _0808330A _080832FC: ldrb r1, [r1, #0x15] movs r0, #8 ands r0, r1 cmp r0, #0 beq _08083312 ldrb r2, [r2] movs r0, #0x2f _0808330A: adds r1, r3, #0 bl sub_0807B7D8 b _0808331C _08083312: ldrb r2, [r2] movs r0, #0x2e adds r1, r3, #0 bl sub_0807B7D8 _0808331C: pop {pc} .align 2, 0 thumb_func_start sub_08083320 sub_08083320: @ 0x08083320 push {lr} ldr r2, _08083334 @ =gUnk_0811F65C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08083334: .4byte gUnk_0811F65C thumb_func_start sub_08083338 sub_08083338: @ 0x08083338 push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x84 ldrh r1, [r2] ldr r0, _08083400 @ =0x0000FFFF cmp r1, r0 beq _08083356 adds r0, r1, #0 bl sub_0807CBE4 cmp r0, #0 beq _08083356 bl sub_0805E780 _08083356: adds r0, r4, #0 bl sub_080837B0 cmp r0, #0 bne _08083362 b _080834B2 _08083362: ldrb r2, [r4, #0xa] lsrs r0, r2, #2 movs r1, #3 ands r0, r1 strb r0, [r4, #0xb] movs r7, #3 adds r0, r7, #0 ands r0, r2 strb r0, [r4, #0x1e] movs r0, #0xc0 lsls r0, r0, #2 strh r0, [r4, #0x24] ldrh r1, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x70 strh r1, [r0] ldrh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] ldrb r1, [r4, #0xa] adds r0, r7, #0 ands r0, r1 adds r6, r4, #0 adds r6, #0x7e strb r0, [r6] ldr r0, _08083404 @ =gUnk_080FD170 str r0, [r4, #0x48] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r2] ldrb r1, [r4, #0xa] movs r0, #0xf ands r0, r1 adds r1, r4, #0 adds r1, #0x5a strb r0, [r1] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08083408 @ =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 r5, r4, #0 adds r5, #0x76 strh r1, [r5] ldrh r0, [r5] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080001DA adds r1, r4, #0 adds r1, #0x74 strh r0, [r1] ldrb r0, [r4, #0xb] cmp r0, #1 beq _08083438 cmp r0, #1 bgt _0808340C cmp r0, #0 beq _08083412 b _080834AE .align 2, 0 _08083400: .4byte 0x0000FFFF _08083404: .4byte gUnk_080FD170 _08083408: .4byte gRoomControls _0808340C: cmp r0, #2 beq _08083456 b _080834AE _08083412: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _0808342E ldrb r1, [r4, #0xa] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _0808344E strb r7, [r4, #0xc] b _080834B2 _0808342E: ldrb r1, [r4, #0xa] movs r0, #0xef ands r0, r1 strb r0, [r4, #0xa] b _08083446 _08083438: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _0808344E _08083446: adds r0, r4, #0 bl sub_08083638 b _080834B2 _0808344E: adds r0, r4, #0 bl sub_080836A0 b _080834B2 _08083456: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _080834A8 ldrb r0, [r4, #0x1e] movs r1, #4 orrs r0, r1 strb r0, [r4, #0x1e] ldrb r1, [r6] ldrh r2, [r5] adds r0, r4, #0 bl sub_080836DC bl sub_08052660 cmp r0, #0 bne _08083484 movs r0, #5 strb r0, [r4, #0xc] b _080834B2 _08083484: movs r0, #8 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_080787CC ldr r1, _080834A4 @ =gUnk_0811F740 ldrb r0, [r6] adds r0, r0, r1 ldrb r2, [r0] adds r0, r4, #0 movs r1, #0 movs r3, #0 bl sub_08078850 b _080834B2 .align 2, 0 _080834A4: .4byte gUnk_0811F740 _080834A8: bl sub_0805E780 b _080834B2 _080834AE: bl sub_0805E780 _080834B2: pop {r4, r5, r6, r7, pc} thumb_func_start sub_080834B4 sub_080834B4: @ 0x080834B4 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xe] subs r0, #1 strb r0, [r2, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080834E6 movs r0, #2 strb r0, [r2, #0xc] movs r0, #7 strb r0, [r2, #0xe] adds r0, r2, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r2, #0 adds r1, #0x76 ldrh r1, [r1] adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer ldr r0, _080834E8 @ =0x0000010B bl sub_08004488 _080834E6: pop {pc} .align 2, 0 _080834E8: .4byte 0x0000010B thumb_func_start sub_080834EC sub_080834EC: @ 0x080834EC push {r4, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08083516 ldrb r1, [r4, #0xa] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08083512 adds r0, r4, #0 bl sub_08083638 b _08083516 _08083512: bl sub_0805E780 _08083516: pop {r4, pc} thumb_func_start sub_08083518 sub_08083518: @ 0x08083518 push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x7e ldrb r1, [r5] bl sub_08083734 cmp r0, #0 beq _0808353C movs r0, #4 strb r0, [r4, #0xc] ldrb r1, [r5] adds r0, r4, #0 adds r0, #0x76 ldrh r2, [r0] adds r0, r4, #0 bl sub_080836DC _0808353C: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08083540 sub_08083540: @ 0x08083540 push {r4, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808358C ldrb r1, [r4, #0xa] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _08083566 movs r0, #0xef ands r0, r1 strb r0, [r4, #0xa] b _0808356E _08083566: movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08083576 _0808356E: adds r0, r4, #0 bl sub_080836A0 b _0808357A _08083576: movs r0, #5 strb r0, [r4, #0xc] _0808357A: adds r0, r4, #0 adds r0, #0x7e ldrb r1, [r0] adds r0, r4, #0 bl sub_08083814 ldr r0, _08083590 @ =0x0000010B bl sub_08004488 _0808358C: pop {r4, pc} .align 2, 0 _08083590: .4byte 0x0000010B thumb_func_start nullsub_513 nullsub_513: @ 0x08083594 bx lr .align 2, 0 thumb_func_start sub_08083598 sub_08083598: @ 0x08083598 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #0 bne _080835B2 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _080835C6 b _080835C0 _080835B2: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _080835C6 _080835C0: adds r0, r4, #0 bl sub_08083658 _080835C6: pop {r4, pc} thumb_func_start sub_080835C8 sub_080835C8: @ 0x080835C8 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #0 bne _080835E2 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _080835F4 b _080835F0 _080835E2: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _080835F4 _080835F0: movs r0, #3 strb r0, [r4, #0xc] _080835F4: pop {r4, pc} .align 2, 0 thumb_func_start sub_080835F8 sub_080835F8: @ 0x080835F8 push {r4, lr} adds r4, r0, #0 adds r0, #0x39 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 bne _08083616 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08083636 _08083616: movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x14 strb r0, [r4, #0xe] adds r0, r4, #0 bl sub_08083658 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 movs r0, #1 rsbs r0, r0, #0 bl sub_080526F8 _08083636: pop {r4, pc} thumb_func_start sub_08083638 sub_08083638: @ 0x08083638 adds r2, r0, #0 movs r0, #7 strb r0, [r2, #0xc] ldrb r1, [r2, #0x18] subs r0, #0xb ands r0, r1 strb r0, [r2, #0x18] adds r0, r2, #0 adds r0, #0x70 ldrh r0, [r0] strh r0, [r2, #0x2e] adds r0, r2, #0 adds r0, #0x72 ldrh r0, [r0] strh r0, [r2, #0x32] bx lr thumb_func_start sub_08083658 sub_08083658: @ 0x08083658 push {lr} movs r1, #1 strb r1, [r0, #0xc] movs r1, #0x14 strb r1, [r0, #0xe] adds r2, r0, #0 adds r2, #0x7e ldrb r1, [r2] lsls r1, r1, #3 strb r1, [r0, #0x15] ldrb r2, [r2] lsls r2, r2, #1 ldr r1, _08083698 @ =gUnk_0811F680 adds r2, r2, r1 movs r1, #0 ldrsb r1, [r2, r1] ldrh r3, [r0, #0x2e] adds r1, r1, r3 strh r1, [r0, #0x2e] movs r1, #1 ldrsb r1, [r2, r1] ldrh r2, [r0, #0x32] adds r1, r1, r2 strh r1, [r0, #0x32] movs r1, #0x3c bl sub_0805E4E0 ldr r0, _0808369C @ =0x0000010B bl PlaySFX pop {pc} .align 2, 0 _08083698: .4byte gUnk_0811F680 _0808369C: .4byte 0x0000010B thumb_func_start sub_080836A0 sub_080836A0: @ 0x080836A0 push {lr} adds r2, r0, #0 movs r0, #6 strb r0, [r2, #0xc] ldrb r1, [r2, #0x18] subs r0, #0xa ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r2, #0x18] adds r0, r2, #0 adds r0, #0x70 ldrh r0, [r0] strh r0, [r2, #0x2e] adds r0, r2, #0 adds r0, #0x72 ldrh r0, [r0] strh r0, [r2, #0x32] ldr r0, _080836D8 @ =0x00004022 adds r1, r2, #0 adds r1, #0x76 ldrh r1, [r1] adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer pop {pc} .align 2, 0 _080836D8: .4byte 0x00004022 thumb_func_start sub_080836DC sub_080836DC: @ 0x080836DC push {r4, r5, lr} adds r5, r0, #0 adds r4, r1, #0 adds r1, r2, #0 ldr r0, _0808372C @ =0x00004022 adds r2, r5, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer movs r0, #7 strb r0, [r5, #0xe] ldrb r1, [r5, #0x18] subs r0, #0xb ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] lsls r0, r4, #3 movs r1, #0x10 eors r0, r1 strb r0, [r5, #0x15] lsls r4, r4, #1 ldr r0, _08083730 @ =gUnk_0811F688 adds r4, r4, r0 ldrb r0, [r5, #0xb] cmp r0, #2 beq _08083728 movs r0, #0 ldrsb r0, [r4, r0] ldrh r1, [r5, #0x2e] adds r0, r0, r1 strh r0, [r5, #0x2e] movs r0, #1 ldrsb r0, [r4, r0] ldrh r1, [r5, #0x32] adds r0, r0, r1 strh r0, [r5, #0x32] _08083728: pop {r4, r5, pc} .align 2, 0 _0808372C: .4byte 0x00004022 _08083730: .4byte gUnk_0811F688 thumb_func_start sub_08083734 sub_08083734: @ 0x08083734 push {lr} adds r2, r0, #0 cmp r1, #1 beq _08083760 cmp r1, #1 blo _0808374A cmp r1, #2 beq _08083774 cmp r1, #3 beq _08083790 b _080837AC _0808374A: adds r0, r2, #0 adds r0, #0x72 ldrh r1, [r0] ldr r0, _0808375C @ =gLinkEntity movs r2, #0x32 ldrsh r0, [r0, r2] subs r0, #0xd b _0808379E .align 2, 0 _0808375C: .4byte gLinkEntity _08083760: ldr r0, _08083770 @ =gLinkEntity movs r1, #0x2e ldrsh r0, [r0, r1] adds r0, #0xb adds r1, r2, #0 adds r1, #0x70 b _08083780 .align 2, 0 _08083770: .4byte gLinkEntity _08083774: ldr r0, _0808378C @ =gLinkEntity movs r1, #0x32 ldrsh r0, [r0, r1] adds r0, #8 adds r1, r2, #0 adds r1, #0x72 _08083780: ldrh r1, [r1] subs r0, r0, r1 cmp r0, #0 bge _080837AC movs r0, #1 b _080837AE .align 2, 0 _0808378C: .4byte gLinkEntity _08083790: adds r0, r2, #0 adds r0, #0x70 ldrh r1, [r0] ldr r0, _080837A8 @ =gLinkEntity movs r2, #0x2e ldrsh r0, [r0, r2] subs r0, #0xa _0808379E: subs r1, r1, r0 cmp r1, #0 bge _080837AC movs r0, #1 b _080837AE .align 2, 0 _080837A8: .4byte gLinkEntity _080837AC: movs r0, #0 _080837AE: pop {pc} thumb_func_start sub_080837B0 sub_080837B0: @ 0x080837B0 push {r4, r5, lr} adds r4, r0, #0 ldr r0, _080837C8 @ =gRoomControls ldrb r2, [r0, #4] cmp r2, #0x3f bhi _080837DC cmp r2, #0x25 beq _080837CC cmp r2, #0x35 beq _080837D4 movs r5, #0xa b _080837E8 .align 2, 0 _080837C8: .4byte gRoomControls _080837CC: ldr r5, _080837D0 @ =0x000001E7 b _080837E8 .align 2, 0 _080837D0: .4byte 0x000001E7 _080837D4: ldr r5, _080837D8 @ =0x000001C3 b _080837E8 .align 2, 0 _080837D8: .4byte 0x000001C3 _080837DC: ldr r1, _080837F8 @ =gUnk_0811F690 adds r0, r2, #0 subs r0, #0x40 lsls r0, r0, #1 adds r0, r0, r1 ldrh r5, [r0] _080837E8: cmp r2, #0x68 bne _080837FC adds r0, r4, #0 movs r1, #0 bl sub_0801D2B4 b _08083808 .align 2, 0 _080837F8: .4byte gUnk_0811F690 _080837FC: cmp r2, #0x88 bne _08083808 adds r0, r4, #0 movs r1, #1 bl sub_0801D2B4 _08083808: adds r0, r4, #0 adds r1, r5, #0 bl sub_080ADF80 pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08083814 sub_08083814: @ 0x08083814 push {r4, r5, lr} adds r5, r0, #0 lsls r1, r1, #2 ldr r0, _08083868 @ =gUnk_0811F730 adds r4, r1, r0 adds r0, r5, #0 movs r1, #0x11 movs r2, #0x40 bl CreateFx adds r2, r0, #0 cmp r2, #0 beq _08083842 movs r0, #0 ldrsb r0, [r4, r0] ldrh r1, [r2, #0x2e] adds r0, r0, r1 strh r0, [r2, #0x2e] movs r0, #1 ldrsb r0, [r4, r0] ldrh r1, [r2, #0x32] adds r0, r0, r1 strh r0, [r2, #0x32] _08083842: adds r0, r5, #0 movs r1, #0x11 movs r2, #0x40 bl CreateFx adds r2, r0, #0 cmp r2, #0 beq _08083866 movs r0, #2 ldrsb r0, [r4, r0] ldrh r1, [r2, #0x2e] adds r0, r0, r1 strh r0, [r2, #0x2e] movs r0, #3 ldrsb r0, [r4, r0] ldrh r1, [r2, #0x32] adds r0, r0, r1 strh r0, [r2, #0x32] _08083866: pop {r4, r5, pc} .align 2, 0 _08083868: .4byte gUnk_0811F730 thumb_func_start sub_0808386C sub_0808386C: @ 0x0808386C push {r4, lr} adds r4, r0, #0 ldr r0, _080838C8 @ =gLinkState adds r0, #0x27 ldrb r1, [r0] rsbs r0, r1, #0 orrs r0, r1 lsrs r2, r0, #0x1f ldr r0, _080838CC @ =gUnk_02022740 ldrb r0, [r0] cmp r0, #2 bgt _08083894 cmp r0, #0 blt _08083894 ldr r0, _080838D0 @ =gTextBox ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 beq _080838AC _08083894: ldr r0, _080838D4 @ =gUnk_03003DF0 ldr r0, [r0, #4] ldrb r0, [r0, #3] cmp r0, #0x32 bne _080838AA movs r0, #0x32 bl sub_0801E7F4 movs r2, #0 cmp r0, #0 beq _080838AC _080838AA: movs r2, #1 _080838AC: cmp r2, #0 beq _080838B6 adds r0, r4, #0 bl sub_080838DC _080838B6: ldr r0, _080838D8 @ =gUnk_0811F754 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 pop {r4, pc} .align 2, 0 _080838C8: .4byte gLinkState _080838CC: .4byte gUnk_02022740 _080838D0: .4byte gTextBox _080838D4: .4byte gUnk_03003DF0 _080838D8: .4byte gUnk_0811F754 thumb_func_start sub_080838DC sub_080838DC: @ 0x080838DC ldrb r2, [r0, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r2 strb r1, [r0, #0x18] ldrb r2, [r0, #0x1b] movs r3, #0x3f adds r1, r3, #0 ands r1, r2 movs r2, #0x40 orrs r1, r2 strb r1, [r0, #0x1b] ldrb r1, [r0, #0x19] ands r3, r1 strb r3, [r0, #0x19] adds r3, r0, #0 adds r3, #0x29 ldrb r2, [r3] movs r1, #8 rsbs r1, r1, #0 ands r1, r2 strb r1, [r3] movs r2, #0 movs r1, #4 strb r1, [r0, #0xe] str r2, [r0, #0x54] strb r2, [r0, #0xc] bx lr thumb_func_start sub_08083914 sub_08083914: @ 0x08083914 push {r4, lr} adds r4, r0, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #1 beq _08083942 adds r0, r4, #0 movs r1, #1 movs r2, #1 bl sub_080AE008 adds r0, r4, #0 adds r0, #0x60 ldrh r1, [r0] subs r1, #0x10 strh r1, [r0] ldr r1, _08083958 @ =0x01027820 movs r0, #1 bl sub_080ADDD8 adds r0, r4, #0 bl sub_080838DC _08083942: movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x20 orrs r0, r1 strb r0, [r4, #0x10] adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 pop {r4, pc} .align 2, 0 _08083958: .4byte 0x01027820 thumb_func_start sub_0808395C sub_0808395C: @ 0x0808395C push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xe] cmp r0, #0 beq _0808396C subs r0, #1 strb r0, [r2, #0xe] b _08083992 _0808396C: ldr r3, _08083994 @ =gUnk_03003DF0 ldr r0, [r3, #4] ldr r1, [r0, #8] cmp r1, #0 beq _08083992 ldrb r0, [r0, #3] subs r0, #1 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x63 bhi _08083992 str r1, [r2, #0x54] ldrb r0, [r3, #3] adds r1, r2, #0 adds r1, #0x39 strb r0, [r1] adds r0, r2, #0 bl sub_08083A40 _08083992: pop {pc} .align 2, 0 _08083994: .4byte gUnk_03003DF0 thumb_func_start sub_08083998 sub_08083998: @ 0x08083998 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #1 beq _080839C8 ldr r0, _080839C4 @ =gUnk_03003DF0 ldr r2, [r0, #4] ldrb r0, [r2, #3] subs r0, #1 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x63 bhi _080839BA ldr r1, [r4, #0x54] ldr r0, [r2, #8] cmp r1, r0 beq _080839C8 _080839BA: adds r0, r4, #0 bl sub_080838DC b _08083A32 .align 2, 0 _080839C4: .4byte gUnk_03003DF0 _080839C8: ldr r1, [r4, #0x54] ldr r0, [r1, #0x2c] str r0, [r4, #0x2c] ldr r0, [r1, #0x30] str r0, [r4, #0x30] ldr r0, [r1, #0x34] str r0, [r4, #0x34] adds r1, r4, #0 adds r1, #0x5a ldrb r0, [r1] cmp r0, #1 bne _08083A2C movs r0, #0 strb r0, [r1] ldrb r0, [r4, #0xa] cmp r0, #0 bne _080839F8 ldr r0, _080839F4 @ =gUnk_03003DF0 ldr r0, [r0, #4] ldrb r0, [r0, #3] b _080839FA .align 2, 0 _080839F4: .4byte gUnk_03003DF0 _080839F8: ldrb r0, [r4, #0xb] _080839FA: lsls r0, r0, #3 ldr r1, _08083A34 @ =gUnk_080C9CBC adds r0, r0, r1 ldrb r2, [r0, #6] movs r1, #1 ands r1, r2 ldrb r3, [r4, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r3 orrs r0, r1 strb r0, [r4, #0x1a] ldr r0, _08083A38 @ =gUnk_0811F744 lsls r2, r2, #2 adds r2, r2, r0 ldr r1, [r2] lsrs r2, r1, #0x1f ldr r0, _08083A3C @ =0x00FFFFFF ands r1, r0 orrs r1, r2 adds r0, #1 orrs r1, r0 movs r0, #0 bl sub_080ADDD8 _08083A2C: adds r0, r4, #0 bl sub_08004274 _08083A32: pop {r4, pc} .align 2, 0 _08083A34: .4byte gUnk_080C9CBC _08083A38: .4byte gUnk_0811F744 _08083A3C: .4byte 0x00FFFFFF thumb_func_start sub_08083A40 sub_08083A40: @ 0x08083A40 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #2 strb r0, [r4, #0xc] ldr r0, [r4, #0x54] ldr r1, _08083A70 @ =gLinkEntity movs r3, #0x2e ldrsh r2, [r0, r3] movs r3, #0x2e ldrsh r0, [r1, r3] cmp r2, r0 ble _08083A74 movs r1, #0 adds r2, r4, #0 adds r2, #0x62 movs r0, #8 b _08083A7C .align 2, 0 _08083A70: .4byte gLinkEntity _08083A74: movs r1, #1 adds r2, r4, #0 adds r2, #0x62 movs r0, #0xf8 _08083A7C: strb r0, [r2] adds r2, r4, #0 adds r2, #0x63 movs r0, #0xee strb r0, [r2] adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 bl sub_08083998 pop {r4, pc} thumb_func_start sub_08083A94 sub_08083A94: @ 0x08083A94 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r6, r0, #0 ldrb r0, [r6, #0xc] cmp r0, #0 bne _08083B24 movs r0, #1 mov r8, r0 mov r2, r8 strb r2, [r6, #0xc] ldr r0, _08083B10 @ =gUnk_080FD170 str r0, [r6, #0x48] adds r7, r6, #0 adds r7, #0x38 ldrb r0, [r7] movs r1, #0x34 cmp r0, #1 bne _08083ABC movs r1, #0x26 _08083ABC: adds r4, r6, #0 adds r4, #0x70 strh r1, [r4] adds r0, r6, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08083B1C ldrh r0, [r4] movs r3, #0x2e ldrsh r1, [r6, r3] ldr r5, _08083B14 @ =gRoomControls ldrh r2, [r5, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r3, #0x32 ldrsh r2, [r6, r3] ldrh r3, [r5, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 ldrb r2, [r7] bl sub_0807B314 ldrh r1, [r5] mov r0, r8 ands r0, r1 cmp r0, #0 beq _08083B08 ldr r1, _08083B18 @ =gUnk_02000070 movs r0, #0 strb r0, [r1] _08083B08: bl sub_0805E780 b _08083B7E .align 2, 0 _08083B10: .4byte gUnk_080FD170 _08083B14: .4byte gRoomControls _08083B18: .4byte gUnk_02000070 _08083B1C: adds r0, r6, #0 bl sub_080787CC b _08083B7E _08083B24: adds r0, r6, #0 adds r0, #0x39 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 beq _08083B7E adds r0, r6, #0 adds r0, #0x70 ldrh r0, [r0] movs r5, #0x2e ldrsh r1, [r6, r5] ldr r3, _08083B84 @ =gRoomControls ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r5, #0x32 ldrsh r2, [r6, r5] ldrh r3, [r3, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 adds r2, r6, #0 adds r2, #0x38 ldrb r2, [r2] bl sub_0807B314 adds r0, r6, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 adds r0, r6, #0 bl sub_080A29BC movs r0, #1 rsbs r0, r0, #0 bl sub_080526F8 bl sub_0805E780 _08083B7E: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08083B84: .4byte gRoomControls thumb_func_start sub_08083B88 sub_08083B88: @ 0x08083B88 push {r4, lr} adds r4, r0, #0 ldr r1, _08083BDC @ =gUnk_0811F7D8 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 ldr r0, [r4, #0x50] adds r0, #0x5a ldrb r1, [r0] lsrs r1, r1, #6 movs r0, #1 ands r1, r0 ldrb r2, [r4, #0x18] subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 bl sub_08080CB4 adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] ldrb r1, [r4, #0x1b] movs r2, #0x3f adds r0, r2, #0 ands r0, r1 movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] ands r2, r0 strb r2, [r4, #0x19] pop {r4, pc} .align 2, 0 _08083BDC: .4byte gUnk_0811F7D8 thumb_func_start sub_08083BE0 sub_08083BE0: @ 0x08083BE0 push {r4, lr} adds r4, r0, #0 movs r1, #6 bl sub_0805E3A0 movs r0, #1 strb r0, [r4, #0xc] pop {r4, pc} thumb_func_start sub_08083BF0 sub_08083BF0: @ 0x08083BF0 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] adds r0, #0x5a ldrb r0, [r0] cmp r0, #0x41 bne _08083C98 movs r0, #2 strb r0, [r4, #0xc] ldrb r0, [r4, #0xe] cmp r0, #5 bhi _08083C98 lsls r0, r0, #2 ldr r1, _08083C14 @ =_08083C18 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08083C14: .4byte _08083C18 _08083C18: @ jump table .4byte _08083C30 @ case 0 .4byte _08083C30 @ case 1 .4byte _08083C4A @ case 2 .4byte _08083C98 @ case 3 .4byte _08083C98 @ case 4 .4byte _08083C74 @ case 5 _08083C30: ldrb r0, [r4, #0xa] ldrb r1, [r4, #0xb] bl sub_08053FF0 adds r1, r4, #0 adds r1, #0x68 strh r0, [r1] ldrb r0, [r4, #0xa] cmp r0, #0x43 bgt _08083C62 cmp r0, #0x40 bge _08083C98 b _08083C62 _08083C4A: ldrb r0, [r4, #0xa] ldrb r1, [r4, #0xb] bl sub_08053FF0 ldr r1, _08083C6C @ =gUnk_080FD964 ldrb r0, [r4, #0xa] lsls r0, r0, #3 adds r0, r0, r1 ldrh r1, [r0, #6] adds r0, r4, #0 adds r0, #0x68 strh r1, [r0] _08083C62: ldr r0, _08083C70 @ =0x00000109 bl PlaySFX b _08083C98 .align 2, 0 _08083C6C: .4byte gUnk_080FD964 _08083C70: .4byte 0x00000109 _08083C74: ldrb r0, [r4, #0xa] bl GetInventoryValue ldrb r1, [r4, #0xa] lsls r1, r1, #3 ldr r2, _08083C8C @ =gUnk_080FD5B4 adds r1, r1, r2 cmp r0, #0 bne _08083C90 ldrh r1, [r1, #4] b _08083C92 .align 2, 0 _08083C8C: .4byte gUnk_080FD5B4 _08083C90: ldrh r1, [r1, #6] _08083C92: adds r0, r4, #0 adds r0, #0x68 strh r1, [r0] _08083C98: pop {r4, pc} .align 2, 0 thumb_func_start sub_08083C9C sub_08083C9C: @ 0x08083C9C push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] adds r0, #0x5a ldrb r0, [r0] cmp r0, #0x42 bne _08083D22 movs r0, #3 strb r0, [r4, #0xc] ldrb r0, [r4, #0xe] cmp r0, #5 bhi _08083D22 lsls r0, r0, #2 ldr r1, _08083CC0 @ =_08083CC4 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08083CC0: .4byte _08083CC4 _08083CC4: @ jump table .4byte _08083CDC @ case 0 .4byte _08083D22 @ case 1 .4byte _08083CDC @ case 2 .4byte _08083D22 @ case 3 .4byte _08083D22 @ case 4 .4byte _08083CDC @ case 5 _08083CDC: adds r0, r4, #0 adds r0, #0x68 ldrh r1, [r0] cmp r1, #0 beq _08083D22 ldrb r0, [r4, #0xa] cmp r0, #0x3f beq _08083D00 cmp r0, #0x63 bne _08083D16 ldr r0, _08083CFC @ =gUnk_02002A40 adds r0, #0xa9 ldrb r0, [r0] adds r1, r1, r0 b _08083D16 .align 2, 0 _08083CFC: .4byte gUnk_02002A40 _08083D00: ldrb r0, [r4, #0xb] cmp r0, #1 bls _08083D16 ldr r0, _08083D10 @ =0x00000577 cmp r1, r0 bne _08083D14 subs r1, #1 b _08083D16 .align 2, 0 _08083D10: .4byte 0x00000577 _08083D14: adds r1, #1 _08083D16: adds r0, r1, #0 bl TextboxTryNoOverlap ldr r1, _08083D24 @ =gTextBox ldrb r0, [r4, #0xb] str r0, [r1, #0x10] _08083D22: pop {r4, pc} .align 2, 0 _08083D24: .4byte gTextBox thumb_func_start sub_08083D28 sub_08083D28: @ 0x08083D28 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] ldrb r0, [r0, #0xc] cmp r0, #8 beq _08083DD4 ldrb r0, [r4, #0xe] cmp r0, #5 bhi _08083DD0 lsls r0, r0, #2 ldr r1, _08083D44 @ =_08083D48 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08083D44: .4byte _08083D48 _08083D48: @ jump table .4byte _08083D60 @ case 0 .4byte _08083D60 @ case 1 .4byte _08083D60 @ case 2 .4byte _08083DAC @ case 3 .4byte _08083DD0 @ case 4 .4byte _08083DD0 @ case 5 _08083D60: ldrb r0, [r4, #0xa] cmp r0, #0x62 beq _08083D88 cmp r0, #0x63 bne _08083DD0 movs r0, #0xa0 bl ModHealth ldr r0, _08083DA8 @ =gUnk_02002A40 adds r1, r0, #0 adds r1, #0xa9 ldrb r0, [r1] adds r0, #1 strb r0, [r1] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #3 bls _08083DD0 movs r0, #0 strb r0, [r1] _08083D88: ldr r0, _08083DA8 @ =gUnk_02002A40 adds r1, r0, #0 adds r1, #0xab ldrb r0, [r1] adds r0, #8 strb r0, [r1] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xa0 bls _08083DA0 movs r0, #0xa0 strb r0, [r1] _08083DA0: movs r0, #0xa0 bl ModHealth b _08083DD0 .align 2, 0 _08083DA8: .4byte gUnk_02002A40 _08083DAC: ldrb r0, [r4, #0xa] bl sub_080544DC adds r1, r0, #0 cmp r1, #0 beq _08083DC8 ldr r0, _08083DC4 @ =gUnk_02002A40 adds r0, r0, r1 adds r0, #0xb5 movs r1, #0x20 strb r1, [r0] b _08083DD0 .align 2, 0 _08083DC4: .4byte gUnk_02002A40 _08083DC8: ldrb r0, [r4, #0xa] movs r1, #2 bl sub_0807CAA0 _08083DD0: bl sub_0805E780 _08083DD4: pop {r4, pc} .align 2, 0 thumb_func_start sub_08083DD8 sub_08083DD8: @ 0x08083DD8 push {lr} ldr r2, _08083DEC @ =gUnk_0811F7E8 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08083DEC: .4byte gUnk_0811F7E8 thumb_func_start sub_08083DF0 sub_08083DF0: @ 0x08083DF0 push {lr} ldr r2, _08083E04 @ =gUnk_0811F808 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08083E04: .4byte gUnk_0811F808 thumb_func_start sub_08083E08 sub_08083E08: @ 0x08083E08 push {lr} ldr r2, _08083E1C @ =gUnk_0811F818 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08083E1C: .4byte gUnk_0811F818 thumb_func_start sub_08083E20 sub_08083E20: @ 0x08083E20 push {r4, lr} adds r4, r0, #0 movs r0, #3 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #7 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] ldrb r1, [r4, #0x19] movs r0, #0xd rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 bl sub_080842D8 adds r0, r4, #0 bl sub_08078828 pop {r4, pc} thumb_func_start sub_08083E4C sub_08083E4C: @ 0x08083E4C push {r4, lr} adds r4, r0, #0 ldr r0, _08083E80 @ =gUnk_0811F8B0 str r0, [r4, #0x48] ldrb r0, [r4, #0xb] bl sub_0807CBD0 cmp r0, #0 beq _08083E84 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #5 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_080842D8 adds r0, r4, #0 movs r1, #1 bl UpdateSprite b _08083EAC .align 2, 0 _08083E80: .4byte gUnk_0811F8B0 _08083E84: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _08083E98 ldrb r0, [r4, #0xa] cmp r0, #4 bne _08083EA0 _08083E98: adds r0, r4, #0 bl sub_08083E20 b _08083EA4 _08083EA0: movs r0, #1 strb r0, [r4, #0xc] _08083EA4: adds r0, r4, #0 movs r1, #0 bl UpdateSprite _08083EAC: pop {r4, pc} .align 2, 0 thumb_func_start sub_08083EB0 sub_08083EB0: @ 0x08083EB0 push {r4, lr} adds r4, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08083F0A ldr r1, _08083F0C @ =gScreen adds r2, r1, #0 adds r2, #0x66 movs r3, #0 movs r0, #0xf4 lsls r0, r0, #4 strh r0, [r2] adds r1, #0x68 adds r0, #0xc0 strh r0, [r1] ldr r1, _08083F10 @ =gUnk_02034490 movs r2, #1 movs r0, #1 strb r0, [r1] movs r0, #2 strb r0, [r4, #0xc] strb r3, [r4, #0xd] movs r0, #0x1e strb r0, [r4, #0xf] ldrb r1, [r4, #0x18] subs r0, #0x22 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r1, [r4, #0x19] movs r0, #0xd rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 movs r1, #0x1e bl sub_0805E4E0 bl sub_0805BC4C _08083F0A: pop {r4, pc} .align 2, 0 _08083F0C: .4byte gScreen _08083F10: .4byte gUnk_02034490 thumb_func_start sub_08083F14 sub_08083F14: @ 0x08083F14 push {r4, r5, lr} adds r4, r0, #0 movs r0, #0x1e bl sub_0805E510 ldrb r0, [r4, #0xd] cmp r0, #0 beq _08083F78 cmp r0, #1 beq _08083FA4 adds r0, r4, #0 bl sub_0800445C movs r1, #0x2e ldrsh r0, [r4, r1] movs r2, #0x32 ldrsh r1, [r4, r2] movs r2, #2 bl sub_080577AC ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] movs r2, #0xff lsls r0, r0, #0x18 cmp r0, #0 bne _08083FE6 movs r0, #8 strb r0, [r4, #0xe] ldrb r0, [r4, #0xf] adds r0, #1 strb r0, [r4, #0xf] ands r2, r0 ldr r3, _08083F74 @ =gScreen movs r0, #0x10 subs r0, r0, r2 lsls r0, r0, #8 movs r5, #0xff lsls r5, r5, #8 adds r1, r5, #0 ands r0, r1 orrs r0, r2 adds r1, r3, #0 adds r1, #0x68 strh r0, [r1] cmp r0, #0x10 bne _08083FE6 b _08083FCC .align 2, 0 _08083F74: .4byte gScreen _08083F78: ldr r5, _08083FA0 @ =gLinkEntity adds r0, r4, #0 adds r1, r5, #0 movs r2, #0x10 movs r3, #8 bl sub_080041A0 cmp r0, #0 beq _08083F98 movs r0, #0x10 movs r1, #0 movs r2, #0 bl sub_08078AC0 movs r0, #0x10 strb r0, [r5, #0x15] _08083F98: movs r0, #1 strb r0, [r4, #0xd] b _08083FE6 .align 2, 0 _08083FA0: .4byte gLinkEntity _08083FA4: ldrb r0, [r4, #0xa] cmp r0, #5 beq _08083FB2 ldr r0, _08083FC8 @ =gLinkEntity ldrb r0, [r0, #0xc] cmp r0, #1 bne _08083FE6 _08083FB2: movs r1, #0 movs r0, #2 strb r0, [r4, #0xd] movs r0, #8 strb r0, [r4, #0xe] strb r1, [r4, #0xf] movs r0, #0xa5 lsls r0, r0, #1 bl PlaySFX b _08083FE6 .align 2, 0 _08083FC8: .4byte gLinkEntity _08083FCC: ldr r1, _08083FE8 @ =gUnk_02034490 movs r0, #0 strb r0, [r1] adds r1, r3, #0 adds r1, #0x66 movs r0, #0 strh r0, [r1] adds r0, r4, #0 bl sub_08083E20 movs r0, #0x73 bl PlaySFX _08083FE6: pop {r4, r5, pc} .align 2, 0 _08083FE8: .4byte gUnk_02034490 thumb_func_start sub_08083FEC sub_08083FEC: @ 0x08083FEC push {r4, lr} adds r4, r0, #0 bl sub_0800445C adds r0, r4, #0 adds r0, #0x39 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 beq _0808401E movs r0, #4 strb r0, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xf] adds r0, r4, #0 bl sub_080788E0 adds r0, r4, #0 movs r1, #0x3c bl sub_0805E4E0 ldr r0, _08084020 @ =0x0000011B bl PlaySFX _0808401E: pop {r4, pc} .align 2, 0 _08084020: .4byte 0x0000011B thumb_func_start sub_08084024 sub_08084024: @ 0x08084024 push {r4, lr} adds r4, r0, #0 bl sub_0800445C adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08084070 ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _0808406A ldrb r0, [r4, #0xe] cmp r0, #0x18 bne _08084060 movs r0, #6 strb r0, [r4, #0xc] movs r0, #8 strb r0, [r4, #0xe] movs r0, #0x10 strb r0, [r4, #0xf] b _0808406A _08084060: movs r0, #5 strb r0, [r4, #0xc] ldrb r0, [r4, #0xb] bl sub_08084074 _0808406A: ldrb r0, [r4, #0xb] bl sub_0807CCB4 _08084070: pop {r4, pc} .align 2, 0 thumb_func_start sub_08084074 sub_08084074: @ 0x08084074 push {r4, lr} adds r4, r0, #0 movs r0, #3 bl sub_0804B128 adds r1, r0, #0 cmp r1, #0 beq _080840A4 b _0808409E _08084086: cmp r0, #3 bne _0808409C ldrb r0, [r1, #1] cmp r4, r0 bne _0808409C ldrb r0, [r1, #2] ldrb r1, [r1, #3] movs r2, #0 bl sub_080A7C00 b _080840A4 _0808409C: adds r1, #8 _0808409E: ldrb r0, [r1] cmp r0, #0 bne _08084086 _080840A4: pop {r4, pc} .align 2, 0 thumb_func_start sub_080840A8 sub_080840A8: @ 0x080840A8 push {r4, r5, r6, r7, lr} adds r6, r0, #0 adds r7, r1, #0 ldr r4, _0808413C @ =gUnk_0811F838 bl Random movs r1, #7 ands r1, r0 adds r1, r1, r4 ldrb r1, [r1] movs r0, #0 movs r2, #0 bl CreateObject adds r5, r0, #0 cmp r5, #0 beq _08084138 movs r0, #6 strb r0, [r5, #0xe] bl Random movs r1, #7 ands r0, r1 adds r0, #0xc movs r1, #0x80 orrs r0, r1 strb r0, [r5, #0x15] bl Random movs r1, #0xf ands r1, r0 lsls r1, r1, #1 adds r1, #0x20 strh r1, [r5, #0x24] bl Random ldr r1, _08084140 @ =gUnk_0811F840 movs r4, #3 ands r0, r4 lsls r0, r0, #2 adds r0, r0, r1 ldr r0, [r0] str r0, [r5, #0x20] bl Random ldr r1, _08084144 @ =gUnk_0811F850 ands r0, r4 adds r0, r0, r1 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 adds r0, r0, r6 strh r0, [r5, #0x2e] adds r0, r7, #1 strh r0, [r5, #0x32] ldr r0, _08084148 @ =0x0000FFF8 strh r0, [r5, #0x36] adds r0, r5, #0 bl sub_08016A30 adds r0, r5, #0 movs r1, #0x11 movs r2, #0 bl CreateFx adds r5, r0, #0 cmp r5, #0 beq _08084138 movs r0, #0x92 lsls r0, r0, #1 bl PlaySFX _08084138: pop {r4, r5, r6, r7, pc} .align 2, 0 _0808413C: .4byte gUnk_0811F838 _08084140: .4byte gUnk_0811F840 _08084144: .4byte gUnk_0811F850 _08084148: .4byte 0x0000FFF8 thumb_func_start sub_0808414C sub_0808414C: @ 0x0808414C push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] movs r2, #0xff lsls r0, r0, #0x18 cmp r0, #0 bne _08084180 movs r0, #8 strb r0, [r1, #0xe] ldrb r0, [r1, #0xf] subs r0, #1 strb r0, [r1, #0xf] ands r0, r2 cmp r0, #0 beq _0808417C movs r2, #0x2e ldrsh r0, [r1, r2] movs r2, #0x32 ldrsh r1, [r1, r2] bl sub_080840A8 b _08084180 _0808417C: movs r0, #5 strb r0, [r1, #0xc] _08084180: pop {pc} .align 2, 0 thumb_func_start sub_08084184 sub_08084184: @ 0x08084184 push {lr} bl sub_0800445C pop {pc} thumb_func_start nullsub_114 nullsub_114: @ 0x0808418C bx lr .align 2, 0 thumb_func_start sub_08084190 sub_08084190: @ 0x08084190 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08084204 @ =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 r5, r4, #0 adds r5, #0x70 strh r1, [r5] ldr r0, _08084208 @ =gUnk_0811F8A8 str r0, [r4, #0x48] adds r0, r4, #0 bl sub_080002A0 cmp r0, #0x74 bne _080841D2 bl sub_0805E780 _080841D2: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08084200 movs r0, #3 strb r0, [r4, #0xc] ldrh r1, [r5] adds r0, r4, #0 adds r0, #0x38 ldrb r2, [r0] movs r0, #0x73 bl sub_0807B7D8 ldrb r1, [r4, #0xa] movs r0, #1 ands r0, r1 cmp r0, #0 bne _08084200 bl sub_0805E780 _08084200: pop {r4, r5, pc} .align 2, 0 _08084204: .4byte gRoomControls _08084208: .4byte gUnk_0811F8A8 thumb_func_start sub_0808420C sub_0808420C: @ 0x0808420C push {r4, lr} adds r4, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08084220 movs r0, #2 strb r0, [r4, #0xc] _08084220: pop {r4, pc} .align 2, 0 thumb_func_start sub_08084224 sub_08084224: @ 0x08084224 push {r4, lr} adds r4, r0, #0 adds r0, #0x70 ldrh r1, [r0] subs r0, #0x38 ldrb r2, [r0] movs r0, #0x73 bl sub_0807B7D8 ldrb r0, [r4, #0xa] cmp r0, #7 bgt _0808424C cmp r0, #6 blt _0808424C ldr r0, _08084248 @ =0x00000215 bl PlaySFX b _08084258 .align 2, 0 _08084248: .4byte 0x00000215 _0808424C: movs r0, #0x72 bl PlaySFX adds r0, r4, #0 bl sub_080A29BC _08084258: movs r0, #3 strb r0, [r4, #0xc] ldrb r1, [r4, #0xe] lsls r0, r1, #4 subs r0, r0, r1 lsls r0, r0, #2 adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] ldrb r1, [r4, #0xa] movs r0, #1 ands r0, r1 cmp r0, #0 bne _08084278 bl sub_0805E780 _08084278: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808427C sub_0808427C: @ 0x0808427C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #1 beq _0808428A cmp r0, #7 bne _080842D4 _0808428A: adds r0, r4, #0 bl sub_080002A0 cmp r0, #0x74 bne _0808429C adds r0, r4, #0 bl sub_0805E7BC b _080842D4 _0808429C: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _080842D4 adds r1, r4, #0 adds r1, #0x72 ldrh r0, [r1] cmp r0, #0 beq _080842BA subs r0, #1 strh r0, [r1] b _080842D4 _080842BA: movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x70 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_0807BA8C adds r0, r4, #0 bl sub_080A29BC _080842D4: pop {r4, pc} .align 2, 0 thumb_func_start sub_080842D8 sub_080842D8: @ 0x080842D8 push {r4, r5, r6, lr} adds r5, r0, #0 ldrh r2, [r5, #0x2e] movs r1, #8 adds r0, r1, #0 ands r0, r2 lsls r0, r0, #0x10 asrs r0, r0, #0x10 rsbs r0, r0, #0 lsrs r2, r0, #0x1f ldrh r0, [r5, #0x32] ands r1, r0 cmp r1, #0 beq _080842F6 adds r2, #2 _080842F6: ldr r1, _0808432C @ =gUnk_0811F898 lsls r0, r2, #2 adds r0, r0, r1 ldr r0, [r0] movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08084330 @ =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_0801AF18 pop {r4, r5, r6, pc} .align 2, 0 _0808432C: .4byte gUnk_0811F898 _08084330: .4byte gRoomControls thumb_func_start sub_08084334 sub_08084334: @ 0x08084334 push {lr} ldr r2, _08084348 @ =gUnk_0811F908 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08084348: .4byte gUnk_0811F908 thumb_func_start sub_0808434C sub_0808434C: @ 0x0808434C push {r4, r5, r6, lr} adds r5, r0, #0 movs r2, #1 movs r3, #1 strb r3, [r5, #0xc] ldrb r1, [r5, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r5, #0x10] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r5, #0x18] adds r1, r5, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r0, r5, #0 adds r0, #0x3f strb r3, [r0] adds r1, #4 movs r0, #0x47 strb r0, [r1] subs r1, #5 movs r0, #2 strb r0, [r1] ldr r0, _080843E0 @ =gUnk_080FD188 str r0, [r5, #0x48] ldr r0, _080843E4 @ =0x00004050 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _080843E8 @ =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 UpdateCollisionLayer ldrb r0, [r5, #0xa] cmp r0, #1 beq _080843C8 adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _080843EC _080843C8: movs r0, #3 strb r0, [r5, #0xc] adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 adds r0, r5, #0 movs r1, #1 bl UpdateSprite b _080843F4 .align 2, 0 _080843E0: .4byte gUnk_080FD188 _080843E4: .4byte 0x00004050 _080843E8: .4byte gRoomControls _080843EC: ldrb r1, [r5, #0xa] adds r0, r5, #0 bl UpdateSprite _080843F4: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_080843F8 sub_080843F8: @ 0x080843F8 push {lr} adds r2, r0, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x9c bne _08084420 movs r0, #2 strb r0, [r2, #0xc] ldrb r1, [r2, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r2, #0x10] adds r0, r2, #0 movs r1, #0xd movs r2, #0 bl CreateFx ldr r0, _08084424 @ =0x0000010D bl sub_08004488 _08084420: pop {pc} .align 2, 0 _08084424: .4byte 0x0000010D thumb_func_start sub_08084428 sub_08084428: @ 0x08084428 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08084454 movs r0, #3 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 movs r0, #0x86 lsls r0, r0, #1 bl sub_08004488 _08084454: pop {r4, pc} .align 2, 0 thumb_func_start sub_08084458 sub_08084458: @ 0x08084458 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08084472 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x14 strb r0, [r4, #0xe] adds r0, r4, #0 bl sub_08004168 b _080844C2 _08084472: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _080844C2 movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _080844C4 @ =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, #0x38 ldrb r2, [r0] movs r0, #0x35 bl sub_0807B7D8 adds r0, r4, #0 movs r1, #0 movs r2, #0x40 bl CreateFx movs r0, #0x93 lsls r0, r0, #1 bl PlaySFX bl sub_0805E780 _080844C2: pop {r4, r5, pc} .align 2, 0 _080844C4: .4byte gRoomControls thumb_func_start sub_080844C8 sub_080844C8: @ 0x080844C8 push {lr} ldr r2, _080844DC @ =gUnk_0811FAC0 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080844DC: .4byte gUnk_0811FAC0 thumb_func_start sub_080844E0 sub_080844E0: @ 0x080844E0 push {r4, r5, lr} adds r5, r0, #0 movs r2, #1 movs r0, #1 strb r0, [r5, #0xc] ldrb r1, [r5, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r5, #0x10] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r5, #0x18] adds r0, r5, #0 movs r1, #6 bl sub_0805E3A0 adds r0, r5, #0 adds r0, #0x38 ldrb r0, [r0] cmp r0, #0 bne _08084516 adds r0, r5, #0 bl sub_08016A30 _08084516: ldrb r0, [r5, #0xa] cmp r0, #0x20 bne _08084524 ldrb r0, [r5, #0x10] movs r1, #0x20 orrs r0, r1 strb r0, [r5, #0x10] _08084524: ldrb r4, [r5, #0xa] cmp r4, #3 bne _08084538 bl Random ldr r1, _080845AC @ =gUnk_0811FAC8 ands r4, r0 adds r1, r4, r1 ldrb r0, [r1] strb r0, [r5, #0xa] _08084538: ldrb r0, [r5, #0xa] cmp r0, #0x17 bne _0808454E bl Random ldr r2, _080845B0 @ =gUnk_0811FACC movs r1, #3 ands r1, r0 adds r1, r1, r2 ldrb r0, [r1] strb r0, [r5, #0xa] _0808454E: ldrb r1, [r5, #0xa] adds r0, r5, #0 bl UpdateSprite ldrb r0, [r5, #0xa] lsls r0, r0, #2 ldr r1, _080845B4 @ =gUnk_0811F960 adds r4, r0, r1 ldrb r1, [r4] movs r0, #0xf ands r0, r1 cmp r0, #6 bne _0808456C movs r0, #0x40 strh r0, [r5, #0x24] _0808456C: ldrh r0, [r4, #2] cmp r0, #0 beq _08084582 ldrb r1, [r5, #0xb] movs r0, #0x40 ands r0, r1 cmp r0, #0 bne _08084582 ldrh r0, [r4, #2] bl sub_08004488 _08084582: ldrb r1, [r5, #0xb] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08084594 ldrb r1, [r4, #1] adds r0, r5, #0 bl sub_0805457C _08084594: ldrb r1, [r5, #0xb] movs r0, #0x20 ands r0, r1 cmp r0, #0 beq _080845AA ldrb r0, [r5, #0x19] movs r1, #0x3f ands r1, r0 movs r0, #0x40 orrs r1, r0 strb r1, [r5, #0x19] _080845AA: pop {r4, r5, pc} .align 2, 0 _080845AC: .4byte gUnk_0811FAC8 _080845B0: .4byte gUnk_0811FACC _080845B4: .4byte gUnk_0811F960 thumb_func_start sub_080845B8 sub_080845B8: @ 0x080845B8 push {lr} ldr r3, _080845D4 @ =gUnk_0811FAD0 ldr r2, _080845D8 @ =gUnk_0811F960 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldrb r1, [r1] lsls r1, r1, #0x1c lsrs r1, r1, #0x1a adds r1, r1, r3 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080845D4: .4byte gUnk_0811FAD0 _080845D8: .4byte gUnk_0811F960 thumb_func_start sub_080845DC sub_080845DC: @ 0x080845DC push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r4, #0x5a ldrb r1, [r4] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080845F4 bl sub_0805E780 _080845F4: pop {r4, pc} .align 2, 0 thumb_func_start sub_080845F8 sub_080845F8: @ 0x080845F8 push {r4, lr} adds r4, r0, #0 ldrh r2, [r4, #0x2e] movs r1, #0xf adds r0, r1, #0 ands r0, r2 movs r2, #8 subs r3, r2, r0 ldrh r0, [r4, #0x32] ands r1, r0 subs r1, r2, r1 adds r0, r3, #0 orrs r0, r1 cmp r0, #0 beq _08084626 adds r0, r3, #0 bl sub_080045DA lsrs r0, r0, #3 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_0806F69C _08084626: adds r0, r4, #0 bl sub_08084630 pop {r4, pc} .align 2, 0 thumb_func_start sub_08084630 sub_08084630: @ 0x08084630 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808467E ldrb r1, [r4, #0xb] movs r3, #1 adds r0, r3, #0 ands r0, r1 cmp r0, #0 beq _0808467A ldr r1, [r4, #0x54] cmp r1, #0 beq _0808467A adds r1, #0x6a ldrh r0, [r1] subs r0, #1 strh r0, [r1] ldr r0, [r4, #0x68] cmp r0, #0 beq _0808467A ldr r2, [r4, #0x54] adds r2, #0x6c subs r0, #1 movs r1, #0x1f ands r0, r1 adds r1, r3, #0 lsls r1, r0 ldrh r0, [r2] bics r0, r1 strh r0, [r2] _0808467A: bl sub_0805E780 _0808467E: pop {r4, pc} thumb_func_start sub_08084680 sub_08084680: @ 0x08084680 push {lr} ldr r1, [r0, #0x34] movs r2, #0x80 lsls r2, r2, #7 adds r1, r1, r2 str r1, [r0, #0x34] bl sub_080845DC pop {pc} .align 2, 0 thumb_func_start sub_08084694 sub_08084694: @ 0x08084694 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] cmp r0, #0 beq _080846A4 ldr r0, [r0, #4] cmp r0, #0 bne _080846A8 _080846A4: bl sub_0805E780 _080846A8: adds r0, r4, #0 bl sub_08004274 pop {r4, pc} thumb_func_start sub_080846B0 sub_080846B0: @ 0x080846B0 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] cmp r0, #0 beq _080846D8 ldrh r1, [r4, #0x24] movs r2, #0x24 ldrsh r0, [r4, r2] cmp r0, #0 beq _080846CA adds r0, r1, #0 subs r0, #0x10 strh r0, [r4, #0x24] _080846CA: adds r0, r4, #0 bl sub_0806F69C adds r0, r4, #0 bl sub_080845DC b _08084718 _080846D8: movs r0, #1 strb r0, [r4, #0xe] ldrb r1, [r4, #0x14] movs r0, #2 orrs r0, r1 cmp r0, #2 bne _080846EA movs r0, #0x1e b _080846EC _080846EA: movs r0, #2 _080846EC: strb r0, [r4, #0x15] ldrb r0, [r4, #0xf] cmp r0, #0 beq _08084712 adds r1, r4, #0 adds r1, #0x60 ldrh r0, [r1] adds r0, #1 strh r0, [r1] ldrb r0, [r4, #0x15] movs r1, #1 cmp r0, #0x17 bls _08084708 subs r1, #2 _08084708: adds r0, r0, r1 strb r0, [r4, #0x15] movs r0, #0xa0 lsls r0, r0, #2 b _08084716 _08084712: movs r0, #0xc0 lsls r0, r0, #2 _08084716: strh r0, [r4, #0x24] _08084718: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808471C sub_0808471C: @ 0x0808471C push {r4, r5, lr} adds r5, r0, #0 bl sub_08004274 adds r0, r5, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08084768 movs r4, #0 _08084734: adds r0, r5, #0 movs r1, #0x24 movs r2, #0 bl CreateFx adds r2, r0, #0 cmp r2, #0 beq _0808475E lsls r1, r4, #1 ldr r0, _0808476C @ =gUnk_0811FB08 adds r1, r1, r0 movs r0, #0 ldrsb r0, [r1, r0] ldrh r3, [r2, #0x2e] adds r0, r0, r3 strh r0, [r2, #0x2e] movs r0, #1 ldrsb r0, [r1, r0] ldrh r1, [r2, #0x32] adds r0, r0, r1 strh r0, [r2, #0x32] _0808475E: adds r4, #1 cmp r4, #3 bls _08084734 bl sub_0805E780 _08084768: pop {r4, r5, pc} .align 2, 0 _0808476C: .4byte gUnk_0811FB08 thumb_func_start sub_08084770 sub_08084770: @ 0x08084770 push {lr} ldr r1, [r0, #0x34] ldr r2, _08084780 @ =0xFFFFC000 adds r1, r1, r2 str r1, [r0, #0x34] bl sub_080845DC pop {pc} .align 2, 0 _08084780: .4byte 0xFFFFC000 thumb_func_start sub_08084784 sub_08084784: @ 0x08084784 push {lr} ldr r1, [r0, #0x34] movs r2, #0x80 lsls r2, r2, #7 adds r1, r1, r2 str r1, [r0, #0x34] bl sub_080845DC pop {pc} .align 2, 0 thumb_func_start sub_08084798 sub_08084798: @ 0x08084798 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _080847B6 ldr r0, [r4, #0x54] ldr r0, [r0, #4] cmp r0, #0 bne _080847BA _080847B6: bl sub_0805E780 _080847BA: pop {r4, pc} thumb_func_start sub_080847BC sub_080847BC: @ 0x080847BC push {lr} ldr r1, [r0, #0x34] ldr r2, _080847CC @ =0xFFFFE000 adds r1, r1, r2 str r1, [r0, #0x34] bl sub_080845DC pop {pc} .align 2, 0 _080847CC: .4byte 0xFFFFE000 thumb_func_start sub_080847D0 sub_080847D0: @ 0x080847D0 push {r4, lr} adds r4, r0, #0 bl sub_0806F69C adds r0, r4, #0 bl sub_080845DC pop {r4, pc} thumb_func_start sub_080847E0 sub_080847E0: @ 0x080847E0 push {r4, r5, lr} adds r5, r0, #0 ldr r0, _08084814 @ =gRoomControls ldrh r0, [r0] cmp r0, #1 bne _080847F0 bl sub_0805E780 _080847F0: ldr r4, _08084818 @ =gLinkEntity ldr r3, _0808481C @ =0xFFFD0000 adds r0, r4, #0 adds r1, r5, #0 movs r2, #0 bl PositionRelative ldr r0, _08084820 @ =0x0000FFFD strh r0, [r5, #0x36] adds r0, r4, #0 adds r1, r5, #0 bl sub_0806FAB0 adds r0, r5, #0 bl sub_080845DC pop {r4, r5, pc} .align 2, 0 _08084814: .4byte gRoomControls _08084818: .4byte gLinkEntity _0808481C: .4byte 0xFFFD0000 _08084820: .4byte 0x0000FFFD thumb_func_start sub_08084824 sub_08084824: @ 0x08084824 push {lr} ldr r2, _08084838 @ =gUnk_08120560 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08084838: .4byte gUnk_08120560 thumb_func_start sub_0808483C sub_0808483C: @ 0x0808483C push {r4, r5, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x19] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x19] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] ldrh r2, [r4, #0x2e] movs r1, #0x10 rsbs r1, r1, #0 adds r0, r1, #0 ands r0, r2 movs r2, #8 orrs r0, r2 strh r0, [r4, #0x2e] ldrh r0, [r4, #0x32] ands r1, r0 orrs r1, r2 strh r1, [r4, #0x32] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _080848C0 @ =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 r5, r4, #0 adds r5, #0x74 strh r1, [r5] adds r0, r4, #0 movs r1, #8 bl UpdateSprite ldr r0, _080848C4 @ =0x00004016 ldrh r1, [r5] adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer movs r0, #0x89 lsls r0, r0, #1 bl PlaySFX pop {r4, r5, pc} .align 2, 0 _080848C0: .4byte gRoomControls _080848C4: .4byte 0x00004016 thumb_func_start sub_080848C8 sub_080848C8: @ 0x080848C8 push {r4, r5, lr} adds r4, r0, #0 ldr r0, _08084980 @ =gLinkState adds r0, #0xa0 ldrb r0, [r0] cmp r0, #5 bne _08084994 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x45 movs r5, #1 strb r5, [r0] movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x11] subs r0, #0x12 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r4, #0x11] ldr r0, _08084984 @ =gUnk_08120574 str r0, [r4, #0x48] ldrb r1, [r4, #0xa] adds r1, #1 lsls r0, r1, #4 subs r0, r0, r1 strb r0, [r4, #0xf] ldr r2, _08084988 @ =gLinkEntity ldrh r0, [r4, #0x2e] ldrh r1, [r2, #0x2e] subs r0, r0, r1 adds r3, r4, #0 adds r3, #0x78 strh r0, [r3] ldrh r1, [r4, #0x32] ldrh r0, [r2, #0x32] subs r1, r1, r0 adds r0, r4, #0 adds r0, #0x7a strh r1, [r0] ldrh r0, [r3] cmp r0, #0 beq _0808493C lsls r0, r1, #0x10 cmp r0, #0 beq _0808493C ldr r0, _0808498C @ =gUnk_03004040 ldrb r1, [r4, #0xa] lsls r1, r1, #2 adds r1, r1, r0 ldr r0, [r1] str r5, [r0, #0x70] _0808493C: ldr r0, _08084990 @ =0x00000315 adds r1, r4, #0 adds r1, #0x74 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl sub_08000152 ldrb r1, [r4, #0xa] adds r1, #1 ldr r0, _08084980 @ =gLinkState ldr r0, [r0, #0x2c] adds r0, #0x68 ldrb r3, [r0] movs r0, #1 movs r2, #0 bl sub_08077CF8 str r0, [r4, #0x54] cmp r0, #0 beq _0808496A str r4, [r0, #0x50] _0808496A: adds r0, r4, #0 bl sub_0801766C adds r0, r4, #0 bl sub_0806FDA0 adds r0, r4, #0 bl sub_080849D8 b _080849D6 .align 2, 0 _08084980: .4byte gLinkState _08084984: .4byte gUnk_08120574 _08084988: .4byte gLinkEntity _0808498C: .4byte gUnk_03004040 _08084990: .4byte 0x00000315 _08084994: cmp r0, #4 beq _080849C4 ldr r0, _080849BC @ =0x00000315 adds r1, r4, #0 adds r1, #0x74 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl sub_08000152 ldr r1, _080849C0 @ =gUnk_03004040 ldrb r0, [r4, #0xa] lsls r0, r0, #2 adds r0, r0, r1 movs r1, #0 str r1, [r0] bl sub_0805E780 b _080849D6 .align 2, 0 _080849BC: .4byte 0x00000315 _080849C0: .4byte gUnk_03004040 _080849C4: ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _080849D6: pop {r4, r5, pc} thumb_func_start sub_080849D8 sub_080849D8: @ 0x080849D8 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xf] adds r1, r0, #0 cmp r1, #1 bne _080849EE movs r0, #0x76 bl PlaySFX ldrb r0, [r4, #0xf] b _080849F2 _080849EE: cmp r1, #0 beq _080849F6 _080849F2: subs r0, #1 strb r0, [r4, #0xf] _080849F6: ldr r2, _08084A3C @ =gLinkState adds r3, r2, #0 adds r3, #0xa0 ldrb r0, [r3] cmp r0, #5 beq _08084A04 b _08084AF8 _08084A04: ldr r0, _08084A40 @ =gUnk_03004040 ldrb r1, [r4, #0xa] lsls r1, r1, #2 adds r1, r1, r0 ldr r0, [r1] cmp r0, #0 beq _08084AF8 adds r0, r2, #0 adds r0, #0xa8 ldrb r0, [r0] cmp r0, #0x13 beq _08084AF8 adds r0, r4, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 beq _08084AF8 ldr r5, _08084A44 @ =gLinkEntity adds r0, r5, #0 adds r0, #0x3d ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 ble _08084A48 movs r0, #1 strb r0, [r3] b _08084AF8 .align 2, 0 _08084A3C: .4byte gLinkState _08084A40: .4byte gUnk_03004040 _08084A44: .4byte gLinkEntity _08084A48: adds r0, r4, #0 bl sub_080002B8 adds r0, r4, #0 bl sub_08084B1C adds r0, r4, #0 adds r0, #0x78 ldrh r0, [r0] ldrh r1, [r5, #0x2e] adds r0, r0, r1 strh r0, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x7a ldrh r0, [r0] ldrh r5, [r5, #0x32] adds r0, r0, r5 strh r0, [r4, #0x32] adds r0, r4, #0 bl sub_08084CAC adds r0, r4, #0 bl sub_080085B0 ldrh r2, [r4, #0x2a] ldr r1, _08084AB8 @ =0x00006666 adds r0, r1, #0 ands r0, r2 cmp r0, r1 beq _08084AEA movs r3, #0 ldr r5, _08084ABC @ =gUnk_0812056C ldrh r1, [r5] adds r0, r1, #0 ands r0, r2 cmp r1, r0 beq _08084AA6 adds r2, r5, #0 _08084A94: adds r2, #2 adds r3, #1 cmp r3, #3 bhi _08084AA6 ldrh r1, [r2] ldrh r0, [r4, #0x2a] ands r0, r1 cmp r1, r0 bne _08084A94 _08084AA6: cmp r3, #4 bne _08084AC0 movs r0, #0 strb r0, [r4, #0xe] ldrb r1, [r4, #0x18] subs r0, #4 ands r0, r1 movs r1, #1 b _08084ADE .align 2, 0 _08084AB8: .4byte 0x00006666 _08084ABC: .4byte gUnk_0812056C _08084AC0: ldrb r0, [r4, #0xe] cmp r0, #0 beq _08084AE4 subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 beq _08084AEA ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 _08084ADE: orrs r0, r1 strb r0, [r4, #0x18] b _08084B16 _08084AE4: movs r0, #0x1e strb r0, [r4, #0xe] b _08084B16 _08084AEA: ldr r0, _08084AF4 @ =gLinkState adds r0, #0xa0 movs r1, #1 strb r1, [r0] b _08084B16 .align 2, 0 _08084AF4: .4byte gLinkState _08084AF8: bl sub_0807A108 adds r0, r4, #0 movs r1, #0x30 movs r2, #0 bl CreateFx ldr r0, [r4, #0x54] bl sub_0805E7BC ldr r0, _08084B18 @ =0x0000018F bl PlaySFX bl sub_0805E780 _08084B16: pop {r4, r5, pc} .align 2, 0 _08084B18: .4byte 0x0000018F thumb_func_start sub_08084B1C sub_08084B1C: @ 0x08084B1C push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} adds r4, r0, #0 ldr r3, _08084CA4 @ =gLinkEntity ldrb r0, [r3, #0x10] strb r0, [r4, #0x10] adds r0, r3, #0 adds r0, #0x60 ldrh r1, [r0] adds r0, r4, #0 adds r0, #0x60 strh r1, [r0] ldrb r0, [r3, #0x1e] strb r0, [r4, #0x1e] adds r0, r3, #0 adds r0, #0x5b ldrb r0, [r0] adds r1, r4, #0 adds r1, #0x5b strb r0, [r1] ldrh r0, [r3, #0x12] strh r0, [r4, #0x12] ldrb r0, [r3, #0x15] strb r0, [r4, #0x15] ldrb r0, [r3, #0x14] strb r0, [r4, #0x14] ldrb r0, [r3, #0x18] movs r1, #1 mov r8, r1 movs r1, #0x40 ands r1, r0 ldrb r2, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 mov sb, r0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] ldrb r1, [r3, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r4, #0x19] movs r7, #0x3f adds r0, r7, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r3, #0 adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d movs r0, #0x29 adds r0, r0, r4 mov ip, r0 movs r6, #7 lsrs r1, r1, #0x1d ldrb r2, [r0] movs r0, #8 rsbs r0, r0, #0 mov sl, r0 ands r0, r2 orrs r0, r1 mov r1, ip strb r0, [r1] ldrb r1, [r3, #0x1b] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r4, #0x1b] adds r0, r7, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x1b] adds r0, r3, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] adds r0, r3, #0 adds r0, #0x3b ldrb r0, [r0] adds r1, r4, #0 adds r1, #0x3b strb r0, [r1] adds r0, r3, #0 adds r0, #0x3f ldrb r0, [r0] adds r1, #4 strb r0, [r1] adds r0, r3, #0 adds r0, #0x3c ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x3c strb r1, [r0] adds r0, r3, #0 adds r0, #0x40 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x40 strb r1, [r0] ldr r1, [r4, #0x54] adds r0, r4, #0 bl CopyPosition ldr r5, _08084CA8 @ =gLinkState ldrb r0, [r5, #4] cmp r0, #0 beq _08084C6A ldr r1, [r4, #0x54] ldr r0, [r5, #0x2c] adds r0, #0x44 ldrb r0, [r0] adds r1, #0x44 strb r0, [r1] ldr r1, [r4, #0x54] ldr r0, [r5, #0x2c] ldrb r0, [r0, #0x1e] strb r0, [r1, #0x1e] ldr r3, [r4, #0x54] ldr r0, [r5, #0x2c] ldrb r1, [r0, #0x18] lsls r1, r1, #0x19 lsrs r1, r1, #0x1f mov r0, r8 ands r1, r0 lsls r1, r1, #6 ldrb r2, [r3, #0x18] mov r0, sb ands r0, r2 orrs r0, r1 strb r0, [r3, #0x18] ldr r3, [r4, #0x54] ldr r0, [r5, #0x2c] ldrb r1, [r0, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r3, #0x19] adds r0, r7, #0 ands r0, r2 orrs r0, r1 strb r0, [r3, #0x19] ldr r2, [r4, #0x54] ldr r0, [r5, #0x2c] adds r0, #0x29 ldrb r0, [r0] lsls r0, r0, #0x1d lsrs r0, r0, #0x1d adds r2, #0x29 ands r6, r0 ldrb r1, [r2] mov r0, sl ands r0, r1 orrs r0, r6 strb r0, [r2] ldr r1, [r4, #0x54] ldrb r0, [r1, #0x18] lsls r0, r0, #0x19 cmp r0, #0 bge _08084C6A ldr r1, [r1, #0x48] ldrb r0, [r1] rsbs r0, r0, #0 strb r0, [r1] _08084C6A: adds r0, r4, #0 movs r1, #0 movs r2, #0 bl sub_0806FEBC adds r0, r4, #0 movs r1, #1 movs r2, #0 bl sub_0806FEBC adds r0, r4, #0 movs r1, #2 adds r2, r4, #0 bl sub_0806FEBC adds r0, r4, #0 movs r1, #3 movs r2, #0 bl sub_0806FEBC ldr r0, [r4, #0x54] adds r1, r4, #0 bl sub_08078E84 pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 _08084CA4: .4byte gLinkEntity _08084CA8: .4byte gLinkState thumb_func_start sub_08084CAC sub_08084CAC: @ 0x08084CAC push {r4, r5, r6, r7, lr} adds r5, r0, #0 ldr r6, _08084D18 @ =gUnk_03004040 ldrb r0, [r5, #0xa] lsls r0, r0, #2 adds r0, r0, r6 ldr r0, [r0] ldr r0, [r0, #0x70] cmp r0, #0 bne _08084D32 ldrb r0, [r5, #0x14] movs r2, #6 ands r2, r0 lsls r2, r2, #1 ldr r0, _08084D1C @ =gUnk_080B4468 adds r2, r2, r0 movs r1, #0x2e ldrsh r0, [r5, r1] movs r3, #0 ldrsh r1, [r2, r3] adds r0, r0, r1 ldr r4, _08084D20 @ =gRoomControls ldrh r1, [r4, #6] subs r0, r0, r1 asrs r0, r0, #4 movs r3, #0x3f ands r0, r3 movs r7, #0x32 ldrsh r1, [r5, r7] movs r7, #2 ldrsh r2, [r2, r7] adds r1, r1, r2 ldrh r2, [r4, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r3 lsls r1, r1, #6 orrs r0, r1 adds r1, r5, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002B0 bl sub_080002E4 cmp r0, #0x72 bne _08084D24 ldr r2, [r6] movs r1, #1 ldrb r5, [r5, #0xa] lsls r1, r5 ldr r0, [r2, #0x6c] orrs r0, r1 b _08084D30 .align 2, 0 _08084D18: .4byte gUnk_03004040 _08084D1C: .4byte gUnk_080B4468 _08084D20: .4byte gRoomControls _08084D24: ldr r2, [r6] movs r1, #1 ldrb r5, [r5, #0xa] lsls r1, r5 ldr r0, [r2, #0x6c] bics r0, r1 _08084D30: str r0, [r2, #0x6c] _08084D32: pop {r4, r5, r6, r7, pc} thumb_func_start sub_08084D34 sub_08084D34: @ 0x08084D34 push {r4, lr} adds r4, r0, #0 bl sub_0805E3B0 cmp r0, #0 bne _08084D50 ldr r0, _08084D54 @ =gUnk_0812057C ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _08084D50: pop {r4, pc} .align 2, 0 _08084D54: .4byte gUnk_0812057C thumb_func_start sub_08084D58 sub_08084D58: @ 0x08084D58 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r7, r0, #0 ldrb r0, [r7, #0xa] cmp r0, #3 bne _08084D6C adds r0, r7, #0 bl sub_08084F8C _08084D6C: adds r0, r7, #0 bl sub_08004168 ldrb r0, [r7, #0xa] cmp r0, #4 bne _08084D7E adds r0, r7, #0 bl sub_08084F8C _08084D7E: movs r0, #2 strb r0, [r7, #0xc] ldrb r0, [r7, #0x10] movs r2, #0x80 orrs r0, r2 strb r0, [r7, #0x10] ldrb r1, [r7, #0x19] movs r5, #0x3f adds r0, r5, #0 ands r0, r1 orrs r0, r2 strb r0, [r7, #0x19] ldr r0, _08084E48 @ =gUnk_08120588 mov r8, r0 ldrb r0, [r7, #0xa] lsls r0, r0, #2 add r0, r8 ldrb r0, [r0, #1] strb r0, [r7, #0x1d] ldrb r0, [r7, #0xa] lsls r0, r0, #2 add r0, r8 ldrb r0, [r0, #2] strb r0, [r7, #0x1c] movs r2, #0 movs r0, #0x80 strh r0, [r7, #0x24] ldr r0, _08084E4C @ =gLinkEntity adds r0, #0x38 ldrb r0, [r0] adds r6, r7, #0 adds r6, #0x38 strb r0, [r6] adds r1, r7, #0 adds r1, #0x45 movs r0, #1 strb r0, [r1] subs r1, #9 movs r0, #7 strb r0, [r1] adds r1, #3 movs r0, #0x6e strb r0, [r1] subs r1, #4 movs r0, #4 strb r0, [r1] ldr r0, _08084E50 @ =gUnk_081205B4 str r0, [r7, #0x48] adds r0, r7, #0 adds r0, #0x72 strb r2, [r0] movs r1, #0x2e ldrsh r0, [r7, r1] ldr r4, _08084E54 @ =gRoomControls ldrh r1, [r4, #6] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r5 movs r2, #0x32 ldrsh r1, [r7, r2] ldrh r2, [r4, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r5 lsls r1, r1, #6 orrs r0, r1 ldrb r1, [r6] bl sub_080001DA adds r1, r7, #0 adds r1, #0x70 strh r0, [r1] ldr r0, _08084E58 @ =0x00004022 movs r3, #0x2e ldrsh r1, [r7, r3] ldrh r2, [r4, #6] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r5 movs r3, #0x32 ldrsh r2, [r7, r3] ldrh r3, [r4, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r5 lsls r2, r2, #6 orrs r1, r2 ldrb r2, [r6] bl UpdateCollisionLayer ldrb r0, [r7, #0xa] lsls r0, r0, #2 add r0, r8 ldrb r1, [r0] adds r0, r7, #0 bl UpdateSprite pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08084E48: .4byte gUnk_08120588 _08084E4C: .4byte gLinkEntity _08084E50: .4byte gUnk_081205B4 _08084E54: .4byte gRoomControls _08084E58: .4byte 0x00004022 thumb_func_start sub_08084E5C sub_08084E5C: @ 0x08084E5C push {r4, r5, lr} adds r4, r0, #0 ldr r0, _08084EAC @ =gLinkState ldrb r1, [r0, #0x1c] movs r0, #0xf ands r0, r1 cmp r0, #1 bne _08084E7A adds r0, r4, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x13 beq _08084EA8 _08084E7A: movs r1, #0x2e ldrsh r0, [r4, r1] ldr r2, _08084EB0 @ =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 adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_0807BA8C bl sub_0805E780 _08084EA8: pop {r4, r5, pc} .align 2, 0 _08084EAC: .4byte gLinkState _08084EB0: .4byte gRoomControls thumb_func_start sub_08084EB4 sub_08084EB4: @ 0x08084EB4 push {lr} ldr r2, _08084EC8 @ =gUnk_0812059C ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08084EC8: .4byte gUnk_0812059C thumb_func_start sub_08084ECC sub_08084ECC: @ 0x08084ECC push {lr} movs r1, #1 strb r1, [r0, #0xd] bl sub_08084ED8 pop {pc} thumb_func_start sub_08084ED8 sub_08084ED8: @ 0x08084ED8 push {r4, lr} adds r4, r0, #0 bl sub_08084E5C adds r0, r4, #0 bl sub_0806F4E8 ldrb r0, [r4, #0x1d] cmp r0, #0 beq _08084EFA subs r0, #1 strb r0, [r4, #0x1d] lsls r0, r0, #0x18 cmp r0, #0 bne _08084EFA movs r0, #2 strb r0, [r4, #0xd] _08084EFA: pop {r4, pc} thumb_func_start sub_08084EFC sub_08084EFC: @ 0x08084EFC push {r4, r5, r6, lr} adds r5, r0, #0 adds r2, r5, #0 adds r2, #0x72 ldrb r1, [r2] cmp r1, #0 bne _08084F42 movs r0, #1 strb r0, [r2] adds r0, r5, #0 adds r0, #0x62 strb r1, [r0] adds r0, #0xe ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08084F7C @ =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_0807B9B8 _08084F42: ldr r0, _08084F80 @ =gLinkState ldrb r1, [r0, #0x1c] movs r0, #0xf ands r0, r1 cmp r0, #1 bne _08084F5C adds r0, r5, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x13 beq _08084F62 _08084F5C: adds r0, r5, #0 bl sub_08084F8C _08084F62: adds r0, r5, #0 bl sub_0806F3E4 cmp r0, #0 beq _08084F7A ldrb r1, [r5, #0x1c] movs r0, #0xf ands r0, r1 cmp r0, #1 bne _08084F7A bl sub_0805E780 _08084F7A: pop {r4, r5, r6, pc} .align 2, 0 _08084F7C: .4byte gRoomControls _08084F80: .4byte gLinkState thumb_func_start sub_08084F84 sub_08084F84: @ 0x08084F84 bx lr .align 2, 0 thumb_func_start sub_08084F88 sub_08084F88: @ 0x08084F88 bx lr .align 2, 0 thumb_func_start sub_08084F8C sub_08084F8C: @ 0x08084F8C push {lr} ldrb r1, [r0, #0xb] cmp r1, #0xf beq _08084FA4 cmp r1, #0xf bgt _08084F9E cmp r1, #0 beq _08084FB8 b _08084FAE _08084F9E: cmp r1, #0xff bne _08084FAE b _08084FB8 _08084FA4: ldrb r1, [r0, #0xe] movs r2, #0x80 bl CreateFx b _08084FB8 _08084FAE: ldrb r1, [r0, #0xb] ldrb r2, [r0, #0xe] movs r3, #0 bl CreateObjectWithParent _08084FB8: bl sub_0805E780 pop {pc} .align 2, 0 thumb_func_start sub_08084FC0 sub_08084FC0: @ 0x08084FC0 push {lr} ldr r2, _08084FD4 @ =gUnk_081205BC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08084FD4: .4byte gUnk_081205BC thumb_func_start sub_08084FD8 sub_08084FD8: @ 0x08084FD8 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0 bne _0808500C adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08084FF4 bl sub_0805E780 _08084FF4: movs r0, #1 strb r0, [r4, #0xc] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 bl sub_080850FC b _0808501C _0808500C: movs r0, #2 strb r0, [r4, #0xc] movs r0, #0xf0 strb r0, [r4, #0xe] movs r0, #0x80 strh r0, [r4, #0x24] movs r0, #0x18 strb r0, [r4, #0x15] _0808501C: movs r0, #0 strb r0, [r4, #0x1e] pop {r4, pc} .align 2, 0 thumb_func_start nullsub_115 nullsub_115: @ 0x08085024 bx lr .align 2, 0 thumb_func_start sub_08085028 sub_08085028: @ 0x08085028 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080850A6 movs r0, #3 strb r0, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xe] adds r1, r4, #0 adds r1, #0x63 movs r0, #4 strb r0, [r1] ldr r0, _080850A8 @ =gScreen mov ip, r0 ldrh r1, [r0] movs r2, #0x80 lsls r2, r2, #6 adds r0, r2, #0 orrs r0, r1 mov r1, ip strh r0, [r1] adds r1, #0x60 movs r0, #0x1f strh r0, [r1] adds r1, #2 movs r0, #0xf strh r0, [r1] movs r2, #0x2e ldrsh r0, [r4, r2] ldr r3, _080850AC @ =gRoomControls movs r2, #0xa ldrsh r1, [r3, r2] subs r0, r0, r1 adds r1, r0, #0 subs r1, #0x18 movs r2, #0xff ands r1, r2 lsls r1, r1, #8 adds r0, #0x18 ands r0, r2 orrs r1, r0 mov r0, ip adds r0, #0x58 strh r1, [r0] movs r1, #0x32 ldrsh r0, [r4, r1] movs r4, #0xc ldrsh r1, [r3, r4] subs r0, r0, r1 adds r1, r0, #0 subs r1, #0x18 ands r1, r2 lsls r1, r1, #8 adds r0, #0x18 ands r0, r2 orrs r1, r0 mov r0, ip adds r0, #0x5c strh r1, [r0] _080850A6: pop {r4, pc} .align 2, 0 _080850A8: .4byte gScreen _080850AC: .4byte gRoomControls thumb_func_start sub_080850B0 sub_080850B0: @ 0x080850B0 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080850C8 movs r0, #4 strb r0, [r1, #0xc] movs r0, #0x60 strb r0, [r1, #0xe] _080850C8: pop {pc} .align 2, 0 thumb_func_start sub_080850CC sub_080850CC: @ 0x080850CC push {r4, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080850F0 ldr r2, _080850F4 @ =gScreen ldrh r1, [r2] ldr r0, _080850F8 @ =0x0000DFFF ands r0, r1 strh r0, [r2] adds r0, r4, #0 bl sub_0805E7BC _080850F0: pop {r4, pc} .align 2, 0 _080850F4: .4byte gScreen _080850F8: .4byte 0x0000DFFF thumb_func_start sub_080850FC sub_080850FC: @ 0x080850FC push {r4, r5, r6, lr} movs r1, #0x2e ldrsh r4, [r0, r1] ldr r2, _0808518C @ =gRoomControls ldrh r1, [r2, #6] subs r4, r4, r1 asrs r4, r4, #4 movs r3, #0x3f ands r4, r3 movs r5, #0x32 ldrsh r1, [r0, r5] ldrh r2, [r2, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r3 lsls r1, r1, #6 orrs r4, r1 adds r0, #0x38 ldrb r6, [r0] ldr r5, _08085190 @ =0x0000403D adds r1, r4, #0 subs r1, #0x41 adds r0, r5, #0 adds r2, r6, #0 bl UpdateCollisionLayer adds r1, r4, #0 subs r1, #0x40 adds r0, r5, #0 adds r2, r6, #0 bl UpdateCollisionLayer adds r1, r4, #0 subs r1, #0x3f adds r0, r5, #0 adds r2, r6, #0 bl UpdateCollisionLayer subs r1, r4, #1 adds r0, r5, #0 adds r2, r6, #0 bl UpdateCollisionLayer adds r0, r5, #0 adds r1, r4, #0 adds r2, r6, #0 bl UpdateCollisionLayer adds r1, r4, #1 adds r0, r5, #0 adds r2, r6, #0 bl UpdateCollisionLayer adds r1, r4, #0 adds r1, #0x3f adds r0, r5, #0 adds r2, r6, #0 bl UpdateCollisionLayer adds r1, r4, #0 adds r1, #0x40 adds r0, r5, #0 adds r2, r6, #0 bl UpdateCollisionLayer adds r4, #0x41 adds r0, r5, #0 adds r1, r4, #0 adds r2, r6, #0 bl UpdateCollisionLayer pop {r4, r5, r6, pc} .align 2, 0 _0808518C: .4byte gRoomControls _08085190: .4byte 0x0000403D thumb_func_start sub_08085194 sub_08085194: @ 0x08085194 push {lr} ldr r2, _080851A8 @ =gUnk_081205D0 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080851A8: .4byte gUnk_081205D0 thumb_func_start sub_080851AC sub_080851AC: @ 0x080851AC push {r4, r5, r6, lr} adds r5, r0, #0 movs r2, #1 movs r3, #1 strb r3, [r5, #0xc] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r5, #0x18] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldrb r1, [r5, #0xb] adds r0, r3, #0 ands r0, r1 cmp r0, #0 beq _080851E8 adds r1, r5, #0 adds r1, #0x7c ldr r0, _080851E4 @ =0x0000FFFF strh r0, [r1] b _080851EE .align 2, 0 _080851E4: .4byte 0x0000FFFF _080851E8: adds r0, r5, #0 adds r0, #0x7c strh r3, [r0] _080851EE: ldrb r1, [r5, #0xb] movs r0, #2 ands r0, r1 strb r0, [r5, #0x14] ldrb r4, [r5, #0xa] cmp r4, #3 bne _0808521E adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 adds r1, r5, #0 adds r1, #0x7a strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 beq _0808521E ldrb r0, [r5, #0x14] adds r0, #2 movs r1, #3 ands r0, r1 strb r0, [r5, #0x14] strb r4, [r5, #0xc] _0808521E: ldrb r1, [r5, #0x14] adds r0, r5, #0 bl UpdateSprite adds r0, r5, #0 adds r0, #0x38 ldrb r0, [r0] bl sub_0808094C movs r1, #0x2e ldrsh r2, [r5, r1] ldr r3, _08085260 @ =gRoomControls ldrh r1, [r3, #6] subs r2, r2, r1 asrs r2, r2, #4 movs r4, #0x3f ands r2, r4 movs r6, #0x32 ldrsh r1, [r5, r6] ldrh r3, [r3, #8] subs r1, r1, r3 asrs r1, r1, #4 ands r1, r4 lsls r1, r1, #6 orrs r2, r1 lsls r2, r2, #1 adds r2, #4 adds r0, r0, r2 str r0, [r5, #0x70] adds r0, r5, #0 bl sub_08085394 pop {r4, r5, r6, pc} .align 2, 0 _08085260: .4byte gRoomControls thumb_func_start sub_08085264 sub_08085264: @ 0x08085264 push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x86 ldrh r0, [r5] bl sub_0807CBE4 cmp r0, #0 beq _080852AE movs r0, #2 strb r0, [r4, #0xc] movs r0, #8 strb r0, [r4, #0xf] ldrb r0, [r4, #0xa] cmp r0, #1 bne _0808528A ldrh r0, [r5] bl sub_0807CD48 _0808528A: adds r0, r4, #0 adds r0, #0x7c ldrb r0, [r0] ldrb r1, [r4, #0x14] adds r0, r0, r1 movs r1, #3 ands r0, r1 strb r0, [r4, #0x14] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 bl sub_0808543C ldr r0, _080852B0 @ =0x00000151 bl sub_08004488 _080852AE: pop {r4, r5, pc} .align 2, 0 _080852B0: .4byte 0x00000151 thumb_func_start sub_080852B4 sub_080852B4: @ 0x080852B4 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xf] subs r0, #1 strb r0, [r5, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _08085300 movs r4, #3 movs r0, #3 strb r0, [r5, #0xc] ldrb r0, [r5, #0xe] strb r0, [r5, #0xf] adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 adds r1, r5, #0 adds r1, #0x7a strh r0, [r1] adds r0, r5, #0 adds r0, #0x7c ldrb r0, [r0] ldrb r1, [r5, #0x14] adds r0, r0, r1 ands r0, r4 strb r0, [r5, #0x14] ldrb r1, [r5, #0x14] adds r0, r5, #0 bl UpdateSprite adds r0, r5, #0 bl sub_08085394 ldr r0, _08085304 @ =0x00000151 bl sub_08004488 _08085300: pop {r4, r5, pc} .align 2, 0 _08085304: .4byte 0x00000151 thumb_func_start sub_08085308 sub_08085308: @ 0x08085308 push {r4, lr} adds r4, r0, #0 bl sub_080854A8 cmp r0, #0 bne _0808538C ldrb r0, [r4, #0xa] cmp r0, #2 beq _08085324 cmp r0, #2 ble _08085354 cmp r0, #3 beq _08085338 b _08085354 _08085324: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _08085354 movs r0, #1 strb r0, [r4, #0xc] b _0808538C _08085338: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 adds r1, r4, #0 adds r1, #0x7a ldrh r1, [r1] cmp r0, r1 bne _08085350 movs r0, #0xff b _08085352 _08085350: movs r0, #1 _08085352: strb r0, [r4, #0xf] _08085354: ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _0808538C movs r0, #2 strb r0, [r4, #0xc] movs r0, #8 strb r0, [r4, #0xf] adds r0, r4, #0 adds r0, #0x7c ldrb r0, [r0] ldrb r1, [r4, #0x14] adds r0, r0, r1 movs r1, #3 ands r0, r1 strb r0, [r4, #0x14] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 bl sub_0808543C ldr r0, _08085390 @ =0x00000151 bl sub_08004488 _0808538C: pop {r4, pc} .align 2, 0 _08085390: .4byte 0x00000151 thumb_func_start sub_08085394 sub_08085394: @ 0x08085394 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} adds r7, r0, #0 ldr r0, _08085430 @ =gUnk_081205E0 ldrb r2, [r7, #0x14] lsrs r2, r2, #1 lsls r2, r2, #1 adds r0, r2, r0 ldrh r0, [r0] mov sl, r0 ldr r0, _08085434 @ =gUnk_080B4488 adds r2, r2, r0 ldr r0, [r7, #0x70] mov sb, r0 movs r1, #0x2e ldrsh r4, [r7, r1] ldr r1, _08085438 @ =gRoomControls ldrh r0, [r1, #6] subs r4, r4, r0 asrs r4, r4, #4 movs r3, #0x3f ands r4, r3 movs r5, #0x32 ldrsh r0, [r7, r5] ldrh r1, [r1, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r4, r0 ldrb r2, [r2] lsls r2, r2, #0x18 asrs r2, r2, #0x18 mov r8, r2 lsls r5, r2, #1 mov r1, sb subs r0, r1, r5 ldrh r1, [r0] adds r0, r7, #0 adds r0, #0x74 strh r1, [r0] subs r1, r4, r2 adds r6, r7, #0 adds r6, #0x38 ldrb r2, [r6] mov r0, sl bl UpdateCollisionLayer mov r1, sb ldrh r0, [r1] adds r1, r7, #0 adds r1, #0x76 strh r0, [r1] ldrb r2, [r6] mov r0, sl adds r1, r4, #0 bl UpdateCollisionLayer add r5, sb ldrh r1, [r5] adds r0, r7, #0 adds r0, #0x78 strh r1, [r0] add r4, r8 ldrb r2, [r6] mov r0, sl adds r1, r4, #0 bl UpdateCollisionLayer pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 _08085430: .4byte gUnk_081205E0 _08085434: .4byte gUnk_080B4488 _08085438: .4byte gRoomControls thumb_func_start sub_0808543C sub_0808543C: @ 0x0808543C push {r4, r5, r6, r7, lr} adds r7, r0, #0 ldr r0, _080854A0 @ =gUnk_080B4488 ldrb r2, [r7, #0x14] lsrs r2, r2, #1 lsls r2, r2, #1 adds r2, r2, r0 movs r0, #0x2e ldrsh r4, [r7, r0] ldr r1, _080854A4 @ =gRoomControls ldrh r0, [r1, #6] subs r4, r4, r0 asrs r4, r4, #4 movs r3, #0x3f ands r4, r3 movs r5, #0x32 ldrsh r0, [r7, r5] ldrh r1, [r1, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r4, r0 adds r0, r7, #0 adds r0, #0x74 ldrh r0, [r0] movs r6, #0 ldrsb r6, [r2, r6] subs r1, r4, r6 adds r5, r7, #0 adds r5, #0x38 ldrb r2, [r5] bl UpdateCollisionLayer adds r0, r7, #0 adds r0, #0x76 ldrh r0, [r0] ldrb r2, [r5] adds r1, r4, #0 bl UpdateCollisionLayer adds r0, r7, #0 adds r0, #0x78 ldrh r0, [r0] adds r4, r4, r6 ldrb r2, [r5] adds r1, r4, #0 bl UpdateCollisionLayer pop {r4, r5, r6, r7, pc} .align 2, 0 _080854A0: .4byte gUnk_080B4488 _080854A4: .4byte gRoomControls thumb_func_start sub_080854A8 sub_080854A8: @ 0x080854A8 push {r4, lr} ldr r2, _080854E0 @ =gUnk_081205E0 ldrb r1, [r0, #0x14] lsrs r1, r1, #1 lsls r1, r1, #1 adds r2, r1, r2 ldrh r3, [r2] adds r4, r3, #0 ldr r2, _080854E4 @ =gUnk_080B4488 adds r1, r1, r2 ldr r2, [r0, #0x70] movs r0, #0 ldrsb r0, [r1, r0] lsls r1, r0, #1 subs r0, r2, r1 ldrh r0, [r0] cmp r3, r0 bne _080854E8 ldrh r0, [r2] cmp r3, r0 bne _080854E8 adds r0, r1, r2 ldrh r0, [r0] cmp r4, r0 bne _080854E8 movs r0, #0 b _080854EA .align 2, 0 _080854E0: .4byte gUnk_081205E0 _080854E4: .4byte gUnk_080B4488 _080854E8: movs r0, #1 _080854EA: pop {r4, pc} thumb_func_start sub_080854EC sub_080854EC: @ 0x080854EC push {lr} ldr r2, _08085500 @ =gUnk_08120608 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08085500: .4byte gUnk_08120608 thumb_func_start sub_08085504 sub_08085504: @ 0x08085504 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0xff bne _08085520 movs r0, #0x46 bl GetInventoryValue cmp r0, #0 beq _0808551C bl sub_0805E780 _0808551C: movs r0, #0 strb r0, [r4, #0xa] _08085520: ldrb r0, [r4, #0xa] cmp r0, #0 beq _08085552 ldr r0, _08085540 @ =gUnk_02033A90 ldrb r0, [r0, #1] cmp r0, #0x1b beq _08085544 ldrb r0, [r4, #0xb] bl sub_0807CBD0 cmp r0, #0 bne _08085552 movs r0, #5 strb r0, [r4, #0xc] b _080855E2 .align 2, 0 _08085540: .4byte gUnk_02033A90 _08085544: ldrb r0, [r4, #0xb] bl sub_0807CBD0 cmp r0, #0 bne _08085552 bl sub_0805E780 _08085552: ldrb r0, [r4, #0xe] cmp r0, #0 beq _0808556C adds r0, r4, #0 bl sub_080040A2 cmp r0, #0 bne _08085566 bl sub_0805E780 _08085566: movs r0, #0 strb r0, [r4, #0xe] b _0808557A _0808556C: adds r0, r4, #0 bl sub_0805EABC cmp r0, #0 beq _0808557A bl sub_0805E780 _0808557A: movs r2, #1 strb r2, [r4, #0xc] movs r3, #0 movs r0, #0x80 lsls r0, r0, #1 strh r0, [r4, #0x24] movs r0, #0x29 adds r0, r0, r4 mov ip, r0 ldrb r1, [r0] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 mov r1, ip strb r0, [r1] ldr r0, _080855E4 @ =gUnk_08120640 str r0, [r4, #0x48] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r1, r4, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r0, r4, #0 adds r0, #0x3f strb r2, [r0] subs r1, #1 movs r0, #4 strb r0, [r1] movs r0, #0x80 lsls r0, r0, #0x11 str r0, [r4, #0x78] adds r1, #0x43 movs r0, #0x80 lsls r0, r0, #5 strh r0, [r1] adds r0, r4, #0 adds r0, #0x85 strb r3, [r0] subs r0, #1 strb r3, [r0] adds r0, r4, #0 movs r1, #9 bl UpdateSprite adds r0, r4, #0 bl sub_080855E8 _080855E2: pop {r4, pc} .align 2, 0 _080855E4: .4byte gUnk_08120640 thumb_func_start sub_080855E8 sub_080855E8: @ 0x080855E8 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r7, r0, #0 ldrb r1, [r7, #0x10] movs r0, #0x20 orrs r0, r1 strb r0, [r7, #0x10] ldr r6, _0808564C @ =gLinkEntity adds r0, r7, #0 adds r1, r6, #0 movs r2, #0x18 bl sub_0806FC80 adds r1, r0, #0 cmp r1, #0 beq _080856EE ldr r3, _08085650 @ =gLinkState ldr r0, [r3, #0x30] movs r1, #2 orrs r0, r1 str r0, [r3, #0x30] ldr r4, [r6, #0x34] cmp r4, #0 beq _0808561C b _080857CE _0808561C: adds r5, r3, #0 adds r5, #0x26 ldrb r0, [r5] cmp r0, #0 beq _08085634 adds r2, r6, #0 adds r2, #0x3c ldrb r1, [r2] movs r0, #0xfb ands r0, r1 strb r0, [r2] strb r4, [r5] _08085634: adds r0, r3, #0 adds r0, #0x84 str r7, [r0] adds r0, r7, #0 adds r0, #0x38 ldrb r0, [r0] cmp r0, #1 bne _08085654 adds r0, r6, #0 bl sub_0800455E b _0808565A .align 2, 0 _0808564C: .4byte gLinkEntity _08085650: .4byte gLinkState _08085654: adds r0, r6, #0 bl sub_08004542 _0808565A: ldrb r0, [r7, #0xf] cmp r0, #0 bne _0808568C movs r0, #4 strb r0, [r7, #0xf] _08085664: adds r0, r7, #0 movs r1, #8 movs r2, #0xa bl sub_080A2AF4 ldrb r0, [r7, #0xf] subs r0, #1 strb r0, [r7, #0xf] lsls r0, r0, #0x18 lsrs r2, r0, #0x18 cmp r2, #0 bne _08085664 movs r0, #1 strb r0, [r7, #0xf] ldrb r1, [r7, #0xe] movs r0, #0x80 orrs r0, r1 strb r0, [r7, #0xe] str r2, [r7, #0x70] str r2, [r7, #0x6c] _0808568C: ldr r2, _080856B8 @ =gLinkState ldrb r0, [r2, #0x1c] cmp r0, #3 beq _08085696 b _080857CE _08085696: ldr r1, _080856BC @ =gUnk_08120620 ldrb r0, [r2, #0x1d] subs r0, #1 lsls r0, r0, #2 adds r0, r0, r1 ldr r4, [r0] ldr r0, _080856C0 @ =gLinkEntity ldrb r0, [r0, #0x14] movs r1, #6 ands r1, r0 cmp r1, #2 beq _080856DE cmp r1, #2 bgt _080856C4 cmp r1, #0 beq _080856D6 b _080857CE .align 2, 0 _080856B8: .4byte gLinkState _080856BC: .4byte gUnk_08120620 _080856C0: .4byte gLinkEntity _080856C4: cmp r1, #4 beq _080856CE cmp r1, #6 beq _080856E6 b _080857CE _080856CE: ldr r0, [r7, #0x70] subs r0, r0, r4 str r0, [r7, #0x70] b _080857CE _080856D6: ldr r0, [r7, #0x70] adds r0, r0, r4 str r0, [r7, #0x70] b _080857CE _080856DE: ldr r0, [r7, #0x6c] subs r0, r0, r4 str r0, [r7, #0x6c] b _080857CE _080856E6: ldr r0, [r7, #0x6c] adds r0, r0, r4 str r0, [r7, #0x6c] b _080857CE _080856EE: ldrb r0, [r7, #0xf] cmp r0, #0 beq _080856FC strb r1, [r7, #0xf] movs r0, #0x83 bl PlaySFX _080856FC: adds r2, r7, #0 adds r2, #0x41 ldrb r1, [r2] movs r0, #0x7f ands r0, r1 mov r8, r2 cmp r0, #0x13 bne _080857C8 movs r0, #0x2e ldrsh r1, [r6, r0] ldr r3, _08085758 @ =gUnk_08126EE4 ldrb r2, [r6, #0x14] movs r0, #0xe ands r0, r2 adds r0, r0, r3 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 adds r5, r1, r0 movs r0, #0x32 ldrsh r1, [r6, r0] movs r0, #1 orrs r0, r2 adds r0, r0, r3 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 adds r3, r1, r0 movs r1, #0x2e ldrsh r0, [r7, r1] movs r2, #0x32 ldrsh r1, [r7, r2] adds r2, r5, #0 bl sub_080045D4 strb r0, [r7, #0x15] ldr r0, _0808575C @ =gLinkState ldrb r0, [r0, #0x1d] cmp r0, #2 beq _0808576A cmp r0, #2 bgt _08085760 cmp r0, #1 beq _08085770 b _08085774 .align 2, 0 _08085758: .4byte gUnk_08126EE4 _0808575C: .4byte gLinkState _08085760: cmp r0, #3 bne _08085774 movs r4, #0x80 lsls r4, r4, #3 b _08085774 _0808576A: movs r4, #0xc0 lsls r4, r4, #2 b _08085774 _08085770: movs r4, #0x80 lsls r4, r4, #2 _08085774: ldr r6, _080858A8 @ =gUnk_080C9160 ldrb r0, [r7, #0x15] lsls r0, r0, #4 adds r0, r0, r6 movs r1, #0 ldrsh r0, [r0, r1] lsls r4, r4, #0x10 asrs r4, r4, #0x18 adds r1, r4, #0 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r5, #0x80 lsls r5, r5, #1 adds r1, r5, #0 bl sub_0806FA04 lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r7, #0x6c] adds r1, r1, r0 str r1, [r7, #0x6c] ldrb r0, [r7, #0x15] lsls r0, r0, #4 adds r0, #0x80 adds r0, r0, r6 movs r2, #0 ldrsh r0, [r0, r2] adds r1, r4, #0 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r5, #0 bl sub_0806FA04 lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r7, #0x70] subs r1, r1, r0 str r1, [r7, #0x70] _080857C8: movs r0, #0 mov r1, r8 strb r0, [r1] _080857CE: ldr r0, [r7, #0x2c] str r0, [r7, #0x54] ldr r0, [r7, #0x30] str r0, [r7, #0x50] ldr r0, [r7, #0x6c] cmp r0, #0 bne _080857E4 ldr r0, [r7, #0x70] cmp r0, #0 bne _080857E4 b _080859F4 _080857E4: ldr r0, [r7, #0x70] ldr r1, _080858AC @ =0xFFFF0000 cmp r0, r1 blt _080857F4 movs r1, #0x80 lsls r1, r1, #9 cmp r0, r1 ble _080857F6 _080857F4: str r1, [r7, #0x70] _080857F6: ldr r0, [r7, #0x6c] ldr r1, _080858AC @ =0xFFFF0000 cmp r0, r1 blt _08085806 movs r1, #0x80 lsls r1, r1, #9 cmp r0, r1 ble _08085808 _08085806: str r1, [r7, #0x6c] _08085808: ldr r0, _080858B0 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #0xf ands r0, r1 cmp r0, #0 bne _0808581A adds r0, r7, #0 bl sub_080A2AD4 _0808581A: ldr r0, [r7, #0x2c] ldr r1, [r7, #0x6c] adds r5, r0, r1 ldr r1, [r7, #0x30] ldr r2, [r7, #0x70] adds r3, r1, r2 adds r2, r5, #0 bl sub_080045D4 strb r0, [r7, #0x15] ldr r0, [r7, #0x6c] lsls r0, r0, #8 asrs r0, r0, #0x10 movs r4, #0x80 lsls r4, r4, #1 adds r1, r4, #0 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 ldr r5, _080858A8 @ =gUnk_080C9160 ldrb r1, [r7, #0x15] lsls r1, r1, #4 adds r1, r1, r5 movs r2, #0 ldrsh r1, [r1, r2] bl sub_0806FA04 strh r0, [r7, #0x24] ldr r0, [r7, #0x70] lsls r0, r0, #8 asrs r0, r0, #0x10 adds r1, r4, #0 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 ldrb r1, [r7, #0x15] lsls r1, r1, #4 adds r1, #0x80 adds r1, r1, r5 movs r2, #0 ldrsh r1, [r1, r2] bl sub_0806FA04 lsls r0, r0, #0x10 asrs r0, r0, #0x10 rsbs r4, r0, #0 movs r1, #0x24 ldrsh r0, [r7, r1] cmp r4, r0 ble _08085884 strh r4, [r7, #0x24] _08085884: ldrb r0, [r7, #0xb] cmp r0, #0 beq _080858BC adds r0, r7, #0 adds r0, #0x7e movs r2, #0 ldrsh r1, [r0, r2] ldr r0, _080858B4 @ =0x00000FFF cmp r1, r0 bgt _080858B8 movs r0, #0x24 ldrsh r1, [r7, r0] lsls r1, r1, #0xc ldr r0, [r7, #0x7c] adds r0, r0, r1 str r0, [r7, #0x7c] b _080858E0 .align 2, 0 _080858A8: .4byte gUnk_080C9160 _080858AC: .4byte 0xFFFF0000 _080858B0: .4byte gUnk_030010A0 _080858B4: .4byte 0x00000FFF _080858B8: movs r0, #0 b _080858DE _080858BC: adds r0, r7, #0 adds r0, #0x7e movs r2, #0 ldrsh r1, [r0, r2] ldr r0, _080858D8 @ =0xFFFFF000 cmp r1, r0 ble _080858DC movs r0, #0x24 ldrsh r1, [r7, r0] lsls r1, r1, #0xc ldr r0, [r7, #0x7c] subs r0, r0, r1 str r0, [r7, #0x7c] b _080858E0 .align 2, 0 _080858D8: .4byte 0xFFFFF000 _080858DC: movs r0, #1 _080858DE: strb r0, [r7, #0xb] _080858E0: adds r0, r7, #0 bl sub_08085EFC adds r0, r7, #0 bl sub_080AF134 ldr r1, [r7, #0x54] ldr r0, [r7, #0x2c] cmp r1, r0 bne _0808590C adds r0, r7, #0 adds r0, #0x85 ldrb r1, [r0] adds r2, r0, #0 cmp r1, #2 bne _08085906 movs r0, #0 str r0, [r7, #0x6c] b _08085916 _08085906: adds r0, r1, #1 strb r0, [r2] b _08085916 _0808590C: adds r1, r7, #0 adds r1, #0x85 movs r0, #0 strb r0, [r1] adds r2, r1, #0 _08085916: ldr r1, [r7, #0x50] ldr r0, [r7, #0x30] cmp r1, r0 bne _0808592E ldrb r0, [r2] cmp r0, #2 bne _0808592A movs r0, #0 str r0, [r7, #0x70] b _08085932 _0808592A: adds r0, #1 b _08085930 _0808592E: movs r0, #0 _08085930: strb r0, [r2] _08085932: ldr r0, _0808595C @ =gLinkState ldr r0, [r0, #0x30] movs r1, #2 ands r0, r1 cmp r0, #0 beq _08085944 adds r0, r7, #0 bl sub_08085F1C _08085944: ldr r1, [r7, #0x6c] cmp r1, #0 beq _08085998 cmp r1, #0 bge _0808596E movs r0, #0x80 rsbs r0, r0, #0 cmp r1, r0 ble _08085960 movs r0, #0 b _08085964 .align 2, 0 _0808595C: .4byte gLinkState _08085960: adds r0, r1, #0 adds r0, #0x80 _08085964: str r0, [r7, #0x6c] ldrh r2, [r7, #0x2a] movs r1, #0xe0 lsls r1, r1, #4 b _08085982 _0808596E: cmp r1, #0x7f bhi _08085976 movs r0, #0 b _0808597A _08085976: adds r0, r1, #0 subs r0, #0x80 _0808597A: str r0, [r7, #0x6c] ldrh r2, [r7, #0x2a] movs r1, #0xe0 lsls r1, r1, #8 _08085982: adds r0, r1, #0 ands r0, r2 cmp r0, r1 bne _08085998 ldr r0, [r7, #0x6c] cmp r0, #0 bge _08085992 adds r0, #3 _08085992: asrs r0, r0, #2 rsbs r0, r0, #0 str r0, [r7, #0x6c] _08085998: ldr r1, [r7, #0x70] cmp r1, #0 beq _080859E6 cmp r1, #0 bge _080859C0 movs r0, #0x80 rsbs r0, r0, #0 cmp r1, r0 ble _080859AE movs r0, #0 b _080859B2 _080859AE: adds r0, r1, #0 adds r0, #0x80 _080859B2: str r0, [r7, #0x70] ldrh r1, [r7, #0x2a] movs r0, #0xe ands r0, r1 cmp r0, #0xe bne _080859E6 b _080859D8 _080859C0: cmp r1, #0x7f bhi _080859C8 movs r0, #0 b _080859CC _080859C8: adds r0, r1, #0 subs r0, #0x80 _080859CC: str r0, [r7, #0x70] ldrh r1, [r7, #0x2a] movs r0, #0xe0 ands r0, r1 cmp r0, #0xe0 bne _080859E6 _080859D8: ldr r0, [r7, #0x70] cmp r0, #0 bge _080859E0 adds r0, #3 _080859E0: asrs r0, r0, #2 rsbs r0, r0, #0 str r0, [r7, #0x70] _080859E6: adds r0, r7, #0 bl sub_08085D28 adds r0, r7, #0 bl sub_08085D60 b _08085A0A _080859F4: ldr r0, _08085A18 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #0x1f ands r0, r1 cmp r0, #0 bne _08085A0A adds r0, r7, #0 movs r1, #8 movs r2, #0xa bl sub_080A2AF4 _08085A0A: adds r0, r7, #0 bl sub_08085F48 pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08085A18: .4byte gUnk_030010A0 thumb_func_start sub_08085A1C sub_08085A1C: @ 0x08085A1C push {lr} ldr r2, _08085A3C @ =gUnk_0812062C ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 ldr r2, _08085A40 @ =gLinkState ldr r0, [r2, #0x30] movs r1, #2 orrs r0, r1 str r0, [r2, #0x30] bl sub_08078B48 pop {pc} .align 2, 0 _08085A3C: .4byte gUnk_0812062C _08085A40: .4byte gLinkState thumb_func_start sub_08085A44 sub_08085A44: @ 0x08085A44 push {r4, lr} adds r4, r0, #0 movs r0, #0x80 lsls r0, r0, #2 strh r0, [r4, #0x24] adds r0, r4, #0 movs r1, #0x10 movs r2, #0x18 bl sub_080002B4 cmp r0, #0x11 beq _08085A62 movs r0, #0x18 strb r0, [r4, #0x15] b _08085A82 _08085A62: movs r1, #0x10 rsbs r1, r1, #0 adds r0, r4, #0 movs r2, #0x18 bl sub_080002B4 cmp r0, #0x11 beq _08085A78 movs r0, #8 strb r0, [r4, #0x15] b _08085A82 _08085A78: movs r0, #0x10 strb r0, [r4, #0x15] movs r0, #1 strb r0, [r4, #0xd] b _08085A94 _08085A82: adds r0, r4, #0 bl sub_08085EFC adds r0, r4, #0 bl sub_080AF134 adds r0, r4, #0 bl sub_08085F1C _08085A94: pop {r4, pc} .align 2, 0 thumb_func_start sub_08085A98 sub_08085A98: @ 0x08085A98 push {r4, lr} adds r4, r0, #0 bl sub_08085EFC adds r0, r4, #0 bl sub_0806F69C adds r0, r4, #0 bl sub_08085F1C ldr r1, [r4, #0x78] ldr r0, _08085B00 @ =0x007FFFFF cmp r1, r0 bls _08085ACC ldr r2, _08085B04 @ =0xFFFE0000 adds r0, r1, r2 str r0, [r4, #0x78] adds r0, r4, #0 adds r0, #0x7a ldrh r2, [r0] adds r0, #4 ldrh r3, [r0] adds r0, r4, #0 adds r1, r2, #0 bl sub_0805EC9C _08085ACC: adds r0, r4, #0 movs r1, #0 movs r2, #0x18 bl sub_080002B4 cmp r0, #0x11 beq _08085B34 movs r0, #2 strb r0, [r4, #0xd] ldr r0, _08085B08 @ =gUnk_02033A90 ldrb r0, [r0, #1] cmp r0, #0x1b bne _08085B10 ldrh r0, [r4, #0x32] adds r0, #0xd0 strh r0, [r4, #0x32] ldr r0, _08085B0C @ =0x0000FF30 strh r0, [r4, #0x36] adds r1, r4, #0 adds r1, #0x82 movs r0, #0x46 strh r0, [r1] movs r0, #0x73 bl sub_0807CCB4 b _08085B22 .align 2, 0 _08085B00: .4byte 0x007FFFFF _08085B04: .4byte 0xFFFE0000 _08085B08: .4byte gUnk_02033A90 _08085B0C: .4byte 0x0000FF30 _08085B10: ldrh r0, [r4, #0x32] adds r0, #0x40 strh r0, [r4, #0x32] ldr r0, _08085B38 @ =0x0000FFC0 strh r0, [r4, #0x36] adds r1, r4, #0 adds r1, #0x82 movs r0, #0xf strh r0, [r1] _08085B22: adds r0, r4, #0 movs r1, #0x2b movs r2, #0 movs r3, #0 bl CreateObjectWithParent ldr r0, _08085B3C @ =0x0000012D bl PlaySFX _08085B34: pop {r4, pc} .align 2, 0 _08085B38: .4byte 0x0000FFC0 _08085B3C: .4byte 0x0000012D thumb_func_start sub_08085B40 sub_08085B40: @ 0x08085B40 push {r4, r5, lr} adds r5, r0, #0 ldr r0, [r5, #0x34] cmp r0, #0 beq _08085BB4 movs r1, #0x80 lsls r1, r1, #6 adds r0, r5, #0 bl sub_08003FC4 cmp r0, #0 beq _08085BE8 ldr r1, [r5, #0x78] ldr r0, _08085B9C @ =0x011FFFFF cmp r1, r0 bhi _08085B7A movs r2, #0x80 lsls r2, r2, #0xd adds r0, r1, r2 str r0, [r5, #0x78] adds r0, r5, #0 adds r0, #0x7a ldrh r2, [r0] adds r0, #4 ldrh r3, [r0] adds r0, r5, #0 adds r1, r2, #0 bl sub_0805EC9C _08085B7A: ldr r4, _08085BA0 @ =gLinkEntity ldrh r3, [r5, #0x32] ldrh r0, [r5, #0x36] adds r0, r3, r0 adds r1, r5, #0 adds r1, #0x74 ldrh r1, [r1] subs r2, r0, r1 strh r2, [r4, #0x32] ldr r0, _08085BA4 @ =gUnk_02033A90 ldrb r0, [r0, #1] cmp r0, #0x1b bne _08085BA8 subs r0, r3, r1 adds r1, r2, #0 adds r1, #0xd0 b _08085BAE .align 2, 0 _08085B9C: .4byte 0x011FFFFF _08085BA0: .4byte gLinkEntity _08085BA4: .4byte gUnk_02033A90 _08085BA8: subs r0, r3, r1 adds r1, r2, #0 adds r1, #0x40 _08085BAE: subs r0, r0, r1 strh r0, [r4, #0x36] b _08085BE8 _08085BB4: adds r0, r5, #0 bl sub_0800455E adds r0, r5, #0 bl sub_080002B8 cmp r0, #0xd bne _08085BE8 ldr r4, _08085C50 @ =gLinkEntity adds r0, r4, #0 bl sub_0800455E adds r0, r5, #0 bl sub_08085CDC adds r0, r4, #0 adds r1, r5, #0 bl sub_080045C4 strb r0, [r5, #0x15] movs r1, #0x80 lsls r1, r1, #1 ldrb r2, [r5, #0x15] adds r0, r4, #0 bl sub_0806F5BC _08085BE8: adds r1, r5, #0 adds r1, #0x82 ldrh r0, [r1] cmp r0, #0 bne _08085C54 ldr r4, _08085C50 @ =gLinkEntity movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08085C58 adds r0, r4, #0 bl sub_0800455E adds r0, r5, #0 bl sub_08085F1C movs r0, #1 strb r0, [r5, #0xc] movs r0, #4 strb r0, [r5, #0xf] _08085C16: adds r0, r5, #0 movs r1, #8 movs r2, #0xa bl sub_080A2AF4 ldrb r0, [r5, #0xf] subs r0, #1 strb r0, [r5, #0xf] lsls r0, r0, #0x18 lsrs r2, r0, #0x18 cmp r2, #0 bne _08085C16 movs r0, #1 strb r0, [r5, #0xf] ldrb r1, [r5, #0xe] movs r0, #0x80 orrs r0, r1 strb r0, [r5, #0xe] str r2, [r5, #0x70] str r2, [r5, #0x6c] adds r0, r5, #0 bl sub_080002B8 cmp r0, #0xd bne _08085C58 movs r0, #4 strb r0, [r5, #0xc] b _08085C58 .align 2, 0 _08085C50: .4byte gLinkEntity _08085C54: subs r0, #1 strh r0, [r1] _08085C58: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08085C5C sub_08085C5C: @ 0x08085C5C push {r4, r5, lr} adds r4, r0, #0 ldr r5, _08085CA0 @ =gLinkEntity adds r1, r5, #0 movs r2, #0x18 bl sub_0806FC80 cmp r0, #0 beq _08085CAE adds r0, r4, #0 bl sub_0806F69C ldrh r0, [r4, #0x24] strh r0, [r5, #0x24] ldrb r0, [r4, #0x15] strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_0806F69C ldr r2, _08085CA4 @ =gLinkState ldr r0, [r2, #0x30] movs r1, #2 orrs r0, r1 str r0, [r2, #0x30] adds r0, r4, #0 adds r0, #0x38 ldrb r0, [r0] cmp r0, #1 bne _08085CA8 adds r0, r5, #0 bl sub_0800455E b _08085CAE .align 2, 0 _08085CA0: .4byte gLinkEntity _08085CA4: .4byte gLinkState _08085CA8: adds r0, r5, #0 bl sub_08004542 _08085CAE: ldr r3, _08085CD4 @ =gRoomControls ldrh r0, [r3] cmp r0, #0 bne _08085CD2 ldrb r1, [r4, #0x10] movs r0, #0xdf ands r0, r1 strb r0, [r4, #0x10] movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x11] lsrs r2, r1, #4 subs r0, #0x11 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x11] ldr r0, _08085CD8 @ =gLinkEntity str r0, [r3, #0x30] _08085CD2: pop {r4, r5, pc} .align 2, 0 _08085CD4: .4byte gRoomControls _08085CD8: .4byte gLinkEntity thumb_func_start sub_08085CDC sub_08085CDC: @ 0x08085CDC push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x78] movs r1, #0x80 lsls r1, r1, #0xd adds r0, r0, r1 str r0, [r4, #0x78] ldr r1, _08085D04 @ =0x03FFFFFF cmp r0, r1 bhi _08085D08 adds r0, r4, #0 adds r0, #0x7a ldrh r2, [r0] adds r0, #4 ldrh r3, [r0] adds r0, r4, #0 adds r1, r2, #0 bl sub_0805EC9C b _08085D0C .align 2, 0 _08085D04: .4byte 0x03FFFFFF _08085D08: bl sub_0805E780 _08085D0C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08085D10 sub_08085D10: @ 0x08085D10 push {r4, lr} adds r4, r0, #0 bl sub_0805EABC cmp r0, #0 beq _08085D26 ldrb r0, [r4, #0xb] bl sub_0807CCB4 bl sub_0805E780 _08085D26: pop {r4, pc} thumb_func_start sub_08085D28 sub_08085D28: @ 0x08085D28 push {r4, r5, lr} adds r4, r0, #0 ldr r1, _08085D5C @ =gLinkState adds r0, r1, #0 adds r0, #0xa8 ldrb r0, [r0] cmp r0, #0x13 beq _08085D5A ldr r0, [r1, #0x30] movs r5, #2 ands r0, r5 cmp r0, #0 beq _08085D5A adds r0, r4, #0 movs r1, #0 movs r2, #0x18 bl sub_080002B4 cmp r0, #0x11 bne _08085D5A movs r0, #0 strb r5, [r4, #0xc] strb r0, [r4, #0xd] bl sub_08078B48 _08085D5A: pop {r4, r5, pc} .align 2, 0 _08085D5C: .4byte gLinkState thumb_func_start sub_08085D60 sub_08085D60: @ 0x08085D60 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r0, #0 ldr r2, _08085D94 @ =gLinkState ldr r0, [r2, #0x30] movs r1, #2 ands r0, r1 cmp r0, #0 beq _08085E64 adds r0, r2, #0 adds r0, #0xa8 ldrb r0, [r0] cmp r0, #0x12 beq _08085E64 ldrb r0, [r2, #2] cmp r0, #0 bne _08085E64 ldrb r1, [r5, #0x15] movs r0, #7 ands r0, r1 cmp r0, #0 bne _08085D98 ldrb r6, [r5, #0x15] adds r4, r6, #0 b _08085DB0 .align 2, 0 _08085D94: .4byte gLinkState _08085D98: movs r0, #0x10 ands r0, r1 movs r4, #8 cmp r0, #0 beq _08085DA4 movs r4, #0x18 _08085DA4: ldrb r0, [r5, #0x15] subs r0, #8 movs r6, #0x10 cmp r0, #0x10 ble _08085DB0 movs r6, #0 _08085DB0: cmp r4, #0x18 beq _08085DB8 cmp r4, #8 bne _08085E20 _08085DB8: lsrs r3, r4, #2 ldr r1, _08085E10 @ =gUnk_08120638 adds r0, r3, r1 movs r7, #0 ldrsb r7, [r0, r7] adds r0, r3, #1 adds r0, r0, r1 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 mov r8, r0 adds r0, r5, #0 adds r1, r7, #0 mov r2, r8 bl sub_080002CC cmp r0, #0xff bne _08085E20 movs r1, #0x2e ldrsh r0, [r5, r1] ldr r2, _08085E14 @ =gRoomControls ldrh r1, [r2, #6] subs r0, r0, r1 adds r0, r0, r7 movs r3, #0x32 ldrsh r1, [r5, r3] ldrh r2, [r2, #8] subs r1, r1, r2 add r1, r8 adds r2, r4, #0 movs r3, #5 bl sub_080806BC cmp r0, #0 bne _08085E1C ldr r0, _08085E18 @ =gLinkEntity lsrs r1, r4, #3 bl sub_0807BD14 cmp r0, #0 beq _08085E20 strb r4, [r5, #0x15] b _08085E52 .align 2, 0 _08085E10: .4byte gUnk_08120638 _08085E14: .4byte gRoomControls _08085E18: .4byte gLinkEntity _08085E1C: strb r4, [r5, #0x15] b _08085E6C _08085E20: cmp r6, #0 beq _08085E28 cmp r6, #0x10 bne _08085E6C _08085E28: lsrs r3, r6, #2 ldr r2, _08085E5C @ =gUnk_08120638 adds r0, r3, r2 movs r1, #0 ldrsb r1, [r0, r1] adds r0, r3, #1 adds r0, r0, r2 movs r2, #0 ldrsb r2, [r0, r2] adds r0, r5, #0 bl sub_080002CC cmp r0, #0xff bne _08085E6C ldr r0, _08085E60 @ =gLinkEntity lsrs r1, r6, #3 bl sub_0807BD14 cmp r0, #0 beq _08085E6C strb r6, [r5, #0x15] _08085E52: adds r0, r5, #0 bl sub_08085E74 b _08085E6C .align 2, 0 _08085E5C: .4byte gUnk_08120638 _08085E60: .4byte gLinkEntity _08085E64: ldrb r1, [r5, #0x10] movs r0, #0xdf ands r0, r1 strb r0, [r5, #0x10] _08085E6C: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08085E74 sub_08085E74: @ 0x08085E74 push {lr} adds r2, r0, #0 ldrb r1, [r2, #0x10] movs r0, #0x20 orrs r0, r1 strb r0, [r2, #0x10] ldrb r1, [r2, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2, #0x11] movs r0, #3 strb r0, [r2, #0xc] ldrb r0, [r2, #0x15] cmp r0, #8 beq _08085EB8 cmp r0, #8 bgt _08085EA2 cmp r0, #0 beq _08085EAC b _08085EBE _08085EA2: cmp r0, #0x10 beq _08085EB2 cmp r0, #0x18 beq _08085EB8 b _08085EBE _08085EAC: movs r0, #0x90 lsls r0, r0, #1 b _08085EBC _08085EB2: movs r0, #0x9c lsls r0, r0, #1 b _08085EBC _08085EB8: movs r0, #0x80 lsls r0, r0, #1 _08085EBC: strh r0, [r2, #0x24] _08085EBE: movs r0, #0 str r0, [r2, #0x70] str r0, [r2, #0x6c] strh r0, [r2, #0x2c] strh r0, [r2, #0x30] ldr r1, _08085EF0 @ =gLinkEntity strh r0, [r1, #0x2c] strh r0, [r1, #0x30] ldrb r0, [r2, #0x15] strb r0, [r1, #0x15] ldr r1, _08085EF4 @ =gLinkState movs r0, #0x80 lsls r0, r0, #1 strh r0, [r1, #8] ldr r0, _08085EF8 @ =gRoomControls str r2, [r0, #0x30] ldr r0, [r1, #0x2c] cmp r0, #0 beq _08085EE8 bl sub_0805E7BC _08085EE8: bl sub_08077B2C pop {pc} .align 2, 0 _08085EF0: .4byte gLinkEntity _08085EF4: .4byte gLinkState _08085EF8: .4byte gRoomControls thumb_func_start sub_08085EFC sub_08085EFC: @ 0x08085EFC ldr r3, _08085F18 @ =gLinkEntity ldrh r1, [r0, #0x2e] ldrh r2, [r3, #0x2e] subs r1, r1, r2 adds r2, r0, #0 adds r2, #0x76 strh r1, [r2] ldrh r1, [r0, #0x32] ldrh r2, [r3, #0x32] subs r1, r1, r2 adds r0, #0x74 strh r1, [r0] bx lr .align 2, 0 _08085F18: .4byte gLinkEntity thumb_func_start sub_08085F1C sub_08085F1C: @ 0x08085F1C push {lr} adds r3, r0, #0 ldr r2, _08085F44 @ =gLinkEntity adds r1, r3, #0 adds r1, #0x76 ldrh r0, [r3, #0x2e] ldrh r1, [r1] subs r0, r0, r1 strh r0, [r2, #0x2e] adds r1, r3, #0 adds r1, #0x74 ldrh r0, [r3, #0x32] ldrh r1, [r1] subs r0, r0, r1 strh r0, [r2, #0x32] ldrb r0, [r3, #0x15] bl sub_0807A5B8 pop {pc} .align 2, 0 _08085F44: .4byte gLinkEntity thumb_func_start sub_08085F48 sub_08085F48: @ 0x08085F48 push {r4, r5, lr} adds r4, r0, #0 ldrb r2, [r4, #0xe] movs r0, #0x80 ands r0, r2 lsls r0, r0, #0x18 lsrs r3, r0, #0x18 cmp r3, #0 beq _08085F8C ldr r5, _08085F80 @ =gLinkState ldrb r0, [r5, #0x12] cmp r0, #0x17 bne _08085F6A bl sub_08078F60 movs r0, #0x19 strb r0, [r5, #0x12] _08085F6A: movs r0, #0x83 bl PlaySFX ldr r1, [r4, #0x78] ldr r0, _08085F84 @ =0x0127FFFF cmp r1, r0 bhi _08085F88 movs r2, #0x80 lsls r2, r2, #0xc b _08085FF8 .align 2, 0 _08085F80: .4byte gLinkState _08085F84: .4byte 0x0127FFFF _08085F88: movs r0, #0 b _08086006 _08085F8C: ldr r0, _08085FAC @ =gLinkState ldr r1, [r0, #0x30] movs r0, #2 ands r1, r0 cmp r1, #0 beq _08085FCC lsls r0, r2, #0x18 cmp r0, #0 beq _08085FB8 ldr r1, [r4, #0x78] ldr r0, _08085FB0 @ =0x011FFFFF cmp r1, r0 bhi _08085FB4 movs r2, #0x80 lsls r2, r2, #8 b _08085FF8 .align 2, 0 _08085FAC: .4byte gLinkState _08085FB0: .4byte 0x011FFFFF _08085FB4: strb r3, [r4, #0xe] b _08086008 _08085FB8: ldr r1, [r4, #0x78] movs r0, #0x88 lsls r0, r0, #0x11 cmp r1, r0 bls _08086004 ldr r2, _08085FC8 @ =0xFFFF8000 b _08085FF8 .align 2, 0 _08085FC8: .4byte 0xFFFF8000 _08085FCC: lsls r0, r2, #0x18 cmp r0, #0 beq _08085FEC ldr r2, [r4, #0x78] ldr r0, _08085FE4 @ =0x010FFFFF cmp r2, r0 bhi _08085FE8 movs r1, #0x80 lsls r1, r1, #7 adds r0, r2, r1 str r0, [r4, #0x78] b _08086008 .align 2, 0 _08085FE4: .4byte 0x010FFFFF _08085FE8: strb r1, [r4, #0xe] b _08086008 _08085FEC: ldr r1, [r4, #0x78] movs r0, #0x83 lsls r0, r0, #0x11 cmp r1, r0 bls _08086004 ldr r2, _08086000 @ =0xFFFFC000 _08085FF8: adds r0, r1, r2 str r0, [r4, #0x78] b _08086008 .align 2, 0 _08086000: .4byte 0xFFFFC000 _08086004: movs r0, #1 _08086006: strb r0, [r4, #0xe] _08086008: adds r0, r4, #0 adds r0, #0x7a ldrh r2, [r0] adds r0, #4 ldrh r3, [r0] adds r0, r4, #0 adds r1, r2, #0 bl sub_0805EC9C pop {r4, r5, pc} thumb_func_start sub_0808601C sub_0808601C: @ 0x0808601C push {lr} ldr r2, _08086030 @ =gUnk_08120648 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08086030: .4byte gUnk_08120648 thumb_func_start sub_08086034 sub_08086034: @ 0x08086034 push {lr} movs r3, #1 movs r1, #1 strb r1, [r0, #0xc] ldrb r2, [r0, #0x18] subs r1, #5 ands r1, r2 orrs r1, r3 strb r1, [r0, #0x18] adds r1, r0, #0 adds r1, #0x58 ldrb r1, [r1] bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_08086054 sub_08086054: @ 0x08086054 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0 bne _08086064 adds r0, r4, #0 bl sub_08004274 _08086064: ldrb r0, [r4, #0xb] cmp r0, #0 beq _0808607C ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _0808607C: ldrb r0, [r4, #0xe] lsls r1, r0, #0x18 cmp r1, #0 blt _080860AA cmp r1, #0 beq _08086098 subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080860AA bl sub_0805E780 b _080860AA _08086098: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080860AA bl sub_0805E780 _080860AA: ldr r1, [r4, #0x54] cmp r1, #0 beq _080860BC ldr r0, [r1, #0x2c] str r0, [r4, #0x2c] ldr r0, [r1, #0x30] str r0, [r4, #0x30] ldr r0, [r1, #0x34] str r0, [r4, #0x34] _080860BC: pop {r4, pc} .align 2, 0 thumb_func_start sub_080860C0 sub_080860C0: @ 0x080860C0 push {lr} ldr r2, _080860D4 @ =gUnk_08120650 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080860D4: .4byte gUnk_08120650 thumb_func_start sub_080860D8 sub_080860D8: @ 0x080860D8 push {r4, lr} adds r4, r0, #0 movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] adds r0, #0xff strh r0, [r4, #0x24] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r0, [r4, #0xa] strb r0, [r4, #0x1e] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldrb r0, [r4, #0xb] bl sub_0804B128 str r0, [r4, #0x54] adds r1, r4, #0 adds r1, #0x54 adds r2, r4, #0 adds r2, #0x70 adds r0, r4, #0 bl sub_080A2CC0 pop {r4, pc} .align 2, 0 thumb_func_start sub_0808611C sub_0808611C: @ 0x0808611C push {r4, lr} adds r4, r0, #0 bl sub_08086168 adds r1, r0, #0 ldrb r0, [r4, #0xe] cmp r0, #0 beq _0808613C ldr r2, [r4, #0x50] ldrb r0, [r2, #0xe] cmp r0, #0 bne _08086144 cmp r1, #0 beq _0808613C adds r0, #1 strb r0, [r2, #0xe] _0808613C: adds r0, r4, #0 bl sub_080A2BE4 b _0808614C _08086144: adds r0, r4, #0 movs r1, #0 bl sub_080A2BE4 _0808614C: adds r2, r4, #0 adds r2, #0x70 ldrh r0, [r2] subs r0, #1 strh r0, [r2] lsls r0, r0, #0x10 cmp r0, #0 bne _08086166 adds r1, r4, #0 adds r1, #0x54 adds r0, r4, #0 bl sub_080A2CC0 _08086166: pop {r4, pc} thumb_func_start sub_08086168 sub_08086168: @ 0x08086168 push {r4, lr} ldrb r1, [r0, #0xa] lsls r1, r1, #1 ldr r2, _0808619C @ =gUnk_08120658 adds r1, r1, r2 ldr r4, _080861A0 @ =gLinkEntity ldrb r2, [r1] ldrb r3, [r1, #1] adds r1, r4, #0 bl sub_080041A0 cmp r0, #0 beq _080861A8 bl sub_08079F8C cmp r0, #0 beq _080861A8 ldr r0, _080861A4 @ =gLinkState movs r1, #1 strb r1, [r0, #0x14] movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _080861A8 movs r0, #1 b _080861AA .align 2, 0 _0808619C: .4byte gUnk_08120658 _080861A0: .4byte gLinkEntity _080861A4: .4byte gLinkState _080861A8: movs r0, #0 _080861AA: pop {r4, pc} thumb_func_start sub_080861AC sub_080861AC: @ 0x080861AC push {lr} ldr r2, _080861C0 @ =gUnk_08120660 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080861C0: .4byte gUnk_08120660 thumb_func_start sub_080861C4 sub_080861C4: @ 0x080861C4 push {r4, r5, r6, lr} adds r4, r0, #0 movs r5, #1 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x80 strh r0, [r4, #0x24] ldr r0, _08086230 @ =gLinkEntity mov ip, r0 ldrb r1, [r0, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r3, [r4, #0x19] movs r2, #0x3f adds r0, r2, #0 ands r0, r3 orrs r0, r1 strb r0, [r4, #0x19] mov r0, ip adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d adds r6, r4, #0 adds r6, #0x29 lsrs r1, r1, #0x1d ldrb r3, [r6] movs r0, #8 rsbs r0, r0, #0 ands r0, r3 orrs r0, r1 strb r0, [r6] mov r0, ip adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] mov r1, ip ldrb r0, [r1, #0x1b] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r1, [r4, #0x1b] ands r2, r1 orrs r2, r0 strb r2, [r4, #0x1b] bl Random ands r0, r5 strb r0, [r4, #0xa] adds r0, r4, #0 movs r1, #0x11 bl UpdateSprite pop {r4, r5, r6, pc} .align 2, 0 _08086230: .4byte gLinkEntity thumb_func_start sub_08086234 sub_08086234: @ 0x08086234 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0 beq _08086258 ldr r0, _08086254 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #1 ands r0, r1 cmp r0, #0 bne _0808625E adds r0, r4, #0 bl sub_08004274 b _0808625E .align 2, 0 _08086254: .4byte gUnk_030010A0 _08086258: adds r0, r4, #0 bl sub_08004274 _0808625E: adds r0, r4, #0 bl sub_0806F3E4 cmp r0, #0 beq _0808626E bl sub_0805E780 b _0808627E _0808626E: ldr r0, _08086280 @ =gLinkState ldrb r1, [r0, #0x1c] movs r0, #0xf ands r0, r1 cmp r0, #1 beq _0808627E bl sub_0805E780 _0808627E: pop {r4, pc} .align 2, 0 _08086280: .4byte gLinkState thumb_func_start sub_08086284 sub_08086284: @ 0x08086284 push {r4, lr} adds r4, r0, #0 ldr r1, _080862B4 @ =gUnk_08120668 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r1, r4, #0 adds r1, #0x41 movs r0, #0 strb r0, [r1] adds r0, r4, #0 adds r0, #0x76 ldrh r1, [r0] adds r0, #4 ldrh r2, [r0] adds r0, r4, #0 movs r3, #0 bl sub_0805EC9C pop {r4, pc} .align 2, 0 _080862B4: .4byte gUnk_08120668 thumb_func_start sub_080862B8 sub_080862B8: @ 0x080862B8 push {r4, r5, lr} adds r4, r0, #0 movs r0, #0x63 bl sub_0807CBD0 cmp r0, #0 beq _080862CA bl sub_0805E780 _080862CA: movs r3, #1 strb r3, [r4, #0xc] ldr r1, _08086350 @ =gUnk_08120678 ldrb r0, [r4, #0xa] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x7c strh r0, [r1] adds r2, r4, #0 adds r2, #0x76 strh r0, [r2] ldrh r0, [r1] subs r1, #2 strh r0, [r1] ldrb r0, [r4, #0xa] cmp r0, #0 bne _08086354 adds r1, #6 ldr r0, [r4, #0x2c] str r0, [r1] adds r1, #4 ldr r0, [r4, #0x30] str r0, [r1] ldrb r1, [r4, #0x19] movs r0, #0x3f ands r0, r1 strb r0, [r4, #0x19] str r4, [r4, #0x50] ldrb r0, [r4, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r1, r4, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r0, r4, #0 adds r0, #0x3f strb r3, [r0] subs r1, #1 movs r0, #4 strb r0, [r1] movs r2, #0 _08086324: adds r5, r2, #1 adds r0, r4, #0 movs r1, #0x18 adds r2, r5, #0 movs r3, #0 bl CreateObjectWithParent adds r1, r0, #0 str r1, [r4, #0x54] cmp r1, #0 beq _08086346 ldr r0, [r4, #0x50] str r0, [r1, #0x50] ldr r0, [r4, #0x54] str r4, [r0, #0x54] ldr r0, [r4, #0x54] str r0, [r4, #0x50] _08086346: adds r2, r5, #0 cmp r2, #3 bls _08086324 b _08086360 .align 2, 0 _08086350: .4byte gUnk_08120678 _08086354: ldrb r0, [r4, #0x19] movs r1, #0x3f ands r1, r0 movs r0, #0x40 orrs r1, r0 strb r1, [r4, #0x19] _08086360: ldrb r1, [r4, #0xa] adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 bl sub_08086370 pop {r4, r5, pc} thumb_func_start sub_08086370 sub_08086370: @ 0x08086370 push {r4, r5, r6, lr} adds r6, r0, #0 ldrb r2, [r6, #0xa] cmp r2, #0 beq _08086440 ldr r0, [r6, #0x54] adds r0, #0x7f ldrb r0, [r0] cmp r0, #0 bne _080863B6 adds r1, r6, #0 adds r1, #0x7c ldrh r0, [r1] adds r2, r6, #0 adds r2, #0x76 strh r0, [r2] ldrh r0, [r1] subs r1, #2 strh r0, [r1] movs r0, #0xc0 lsls r0, r0, #2 strh r0, [r6, #0x24] ldr r2, [r6, #0x50] ldr r0, [r2, #0x2c] ldr r1, [r6, #0x2c] subs r0, r0, r1 ldr r1, [r2, #0x30] ldr r2, [r6, #0x30] subs r1, r1, r2 bl sub_080045DA movs r1, #0x80 eors r0, r1 strb r0, [r6, #0x15] b _08086428 _080863B6: movs r0, #0xc0 lsls r0, r0, #3 strh r0, [r6, #0x24] ldr r2, _080863E8 @ =gLinkEntity ldr r0, [r2, #0x2c] ldr r1, [r6, #0x2c] subs r0, r0, r1 ldr r1, [r2, #0x30] ldr r2, [r6, #0x30] subs r1, r1, r2 bl sub_080045DA adds r1, r0, #0 movs r0, #0x80 eors r1, r0 ldrb r2, [r6, #0x15] cmp r1, r2 beq _080863F0 subs r0, r1, r2 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x80 bls _080863EC adds r0, r2, #3 b _080863EE .align 2, 0 _080863E8: .4byte gLinkEntity _080863EC: subs r0, r2, #3 _080863EE: strb r0, [r6, #0x15] _080863F0: ldr r0, _0808640C @ =gLinkEntity ldrb r1, [r0, #0x14] movs r0, #2 ands r0, r1 cmp r0, #0 bne _08086410 adds r0, r6, #0 adds r0, #0x7c ldrh r0, [r0] adds r0, #0x40 adds r1, r6, #0 adds r1, #0x76 b _08086426 .align 2, 0 _0808640C: .4byte gLinkEntity _08086410: adds r0, r6, #0 adds r0, #0x7c ldrh r1, [r0] subs r1, #0x20 adds r2, r6, #0 adds r2, #0x76 strh r1, [r2] ldrh r0, [r0] adds r0, #0x50 adds r1, r6, #0 adds r1, #0x7a _08086426: strh r0, [r1] _08086428: ldr r1, [r6, #0x50] ldr r0, [r1, #0x2c] str r0, [r6, #0x2c] ldr r0, [r1, #0x30] str r0, [r6, #0x30] movs r0, #0x24 ldrsh r1, [r6, r0] ldrb r2, [r6, #0x15] adds r0, r6, #0 bl sub_0806F62C b _0808654A _08086440: adds r0, r6, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x13 bne _08086498 ldrb r0, [r6, #0x15] adds r0, #1 strb r0, [r6, #0x15] ldrb r0, [r6, #0x1d] subs r0, #1 strb r0, [r6, #0x1d] adds r2, r6, #0 adds r2, #0x7f movs r0, #1 strb r0, [r2] ldr r0, _08086480 @ =gLinkEntity ldrb r1, [r0, #0x14] movs r0, #2 ands r0, r1 adds r3, r2, #0 cmp r0, #0 bne _08086484 adds r0, r6, #0 adds r0, #0x7c ldrh r0, [r0] adds r0, #0x10 adds r1, r6, #0 adds r1, #0x76 strh r0, [r1] b _080864BC .align 2, 0 _08086480: .4byte gLinkEntity _08086484: adds r1, r6, #0 adds r1, #0x7c ldrh r0, [r1] subs r0, #0x20 adds r2, r6, #0 adds r2, #0x76 strh r0, [r2] ldrh r0, [r1] adds r0, #0x30 b _080864B6 _08086498: ldrb r0, [r6, #0x15] adds r0, #2 strb r0, [r6, #0x15] movs r0, #0xf0 strb r0, [r6, #0x1d] adds r3, r6, #0 adds r3, #0x7f strb r2, [r3] adds r1, r6, #0 adds r1, #0x7c ldrh r0, [r1] adds r2, r6, #0 adds r2, #0x76 strh r0, [r2] ldrh r0, [r1] _080864B6: subs r1, #2 strh r0, [r1] adds r1, r2, #0 _080864BC: ldrb r2, [r6, #0x1d] cmp r2, #0 bne _080864CA movs r0, #2 strb r0, [r6, #0xc] strb r2, [r3] b _0808654A _080864CA: ldrb r0, [r6, #0x15] adds r0, #0x40 lsls r0, r0, #0x18 cmp r0, #0 blt _080864E0 ldrh r2, [r1] movs r3, #0 ldrsh r0, [r1, r3] cmp r0, #0 ble _080864EE b _080864EA _080864E0: ldrh r2, [r1] movs r3, #0 ldrsh r0, [r1, r3] cmp r0, #0 bge _080864EE _080864EA: rsbs r0, r2, #0 strh r0, [r1] _080864EE: ldr r5, _0808654C @ =gUnk_080C9160 ldrb r0, [r6, #0x15] lsls r0, r0, #1 adds r0, r0, r5 movs r1, #0 ldrsh r0, [r0, r1] movs r1, #0x80 lsls r1, r1, #6 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r4, #0x80 lsls r4, r4, #1 adds r1, r4, #0 bl sub_0806FA04 adds r1, r6, #0 adds r1, #0x80 lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r1] adds r1, r1, r0 str r1, [r6, #0x2c] ldrb r0, [r6, #0x15] adds r0, #0x40 lsls r0, r0, #1 adds r0, r0, r5 movs r3, #0 ldrsh r0, [r0, r3] movs r1, #0x80 lsls r1, r1, #5 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r4, #0 bl sub_0806FA04 adds r1, r6, #0 adds r1, #0x84 lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r1] subs r1, r1, r0 str r1, [r6, #0x30] _0808654A: pop {r4, r5, r6, pc} .align 2, 0 _0808654C: .4byte gUnk_080C9160 thumb_func_start sub_08086550 sub_08086550: @ 0x08086550 push {r4, r5, lr} adds r4, r0, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x13 beq _08086566 movs r0, #3 strb r0, [r4, #0xc] b _08086592 _08086566: adds r0, r4, #0 bl sub_0806F3E4 cmp r0, #0 beq _08086592 movs r0, #0x63 bl sub_0807CCB4 movs r0, #0 bl sub_0807CD10 movs r5, #0 _0808657E: ldr r0, [r4, #0x54] ldr r1, [r0, #0x50] str r1, [r4, #0x54] bl sub_0805E7BC adds r5, #1 cmp r5, #3 bls _0808657E bl sub_0805E780 _08086592: pop {r4, r5, pc} thumb_func_start sub_08086594 sub_08086594: @ 0x08086594 push {r4, r5, r6, r7, lr} adds r7, r0, #0 adds r0, #0x80 ldr r0, [r0] ldr r1, [r7, #0x2c] subs r0, r0, r1 adds r1, r7, #0 adds r1, #0x84 ldr r1, [r1] ldr r2, [r7, #0x30] subs r1, r1, r2 bl sub_080045DA strb r0, [r7, #0x15] adds r0, r7, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x13 bne _08086608 movs r0, #0x80 lsls r0, r0, #1 strh r0, [r7, #0x24] ldrb r0, [r7, #0x1d] subs r0, #1 strb r0, [r7, #0x1d] adds r2, r7, #0 adds r2, #0x7f movs r0, #1 strb r0, [r2] ldr r0, _080865EC @ =gLinkEntity ldrb r1, [r0, #0x14] movs r0, #2 ands r0, r1 cmp r0, #0 bne _080865F0 adds r0, r7, #0 adds r0, #0x7c ldrh r0, [r0] adds r0, #0x10 adds r1, r7, #0 adds r1, #0x76 b _0808662A .align 2, 0 _080865EC: .4byte gLinkEntity _080865F0: adds r0, r7, #0 adds r0, #0x7c ldrh r1, [r0] subs r1, #0x20 adds r3, r7, #0 adds r3, #0x76 strh r1, [r3] ldrh r0, [r0] adds r0, #0x30 adds r1, r7, #0 adds r1, #0x7a b _0808662A _08086608: movs r1, #0 movs r0, #0x80 lsls r0, r0, #2 strh r0, [r7, #0x24] movs r0, #0xf0 strb r0, [r7, #0x1d] adds r2, r7, #0 adds r2, #0x7f strb r1, [r2] adds r1, r7, #0 adds r1, #0x7c ldrh r0, [r1] adds r3, r7, #0 adds r3, #0x76 strh r0, [r3] ldrh r0, [r1] subs r1, #2 _0808662A: strh r0, [r1] ldrb r1, [r7, #0x1d] cmp r1, #0 bne _0808663A movs r0, #2 strb r0, [r7, #0xc] strb r1, [r2] b _080866B8 _0808663A: movs r0, #0x24 ldrsh r1, [r7, r0] ldrb r2, [r7, #0x15] adds r0, r7, #0 bl sub_0806F62C ldrb r0, [r7, #0x15] movs r1, #0x80 eors r0, r1 strb r0, [r7, #0x15] ldr r6, _080866BC @ =gUnk_080C9160 ldrb r0, [r7, #0x15] lsls r0, r0, #1 adds r0, r0, r6 movs r1, #0 ldrsh r0, [r0, r1] movs r1, #0x80 lsls r1, r1, #6 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r5, #0x80 lsls r5, r5, #1 adds r1, r5, #0 bl sub_0806FA04 adds r1, r7, #0 adds r1, #0x80 lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r4, [r1] adds r4, r4, r0 ldrb r0, [r7, #0x15] adds r0, #0x40 lsls r0, r0, #1 adds r0, r0, r6 movs r1, #0 ldrsh r0, [r0, r1] movs r1, #0x80 lsls r1, r1, #5 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r5, #0 bl sub_0806FA04 adds r1, r7, #0 adds r1, #0x84 lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r2, [r1] subs r2, r2, r0 adds r0, r7, #0 adds r1, r4, #0 movs r3, #2 bl sub_0806FCB8 cmp r0, #0 beq _080866B8 movs r0, #1 strb r0, [r7, #0xc] _080866B8: pop {r4, r5, r6, r7, pc} .align 2, 0 _080866BC: .4byte gUnk_080C9160