.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_080874A0 sub_080874A0: @ 0x080874A0 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _080874AE movs r0, #1 strb r0, [r4, #0xc] _080874AE: adds r0, r4, #0 adds r0, #0x80 movs r1, #0 ldrsh r0, [r0, r1] adds r1, r4, #0 adds r1, #0x82 movs r2, #0 ldrsh r1, [r1, r2] movs r2, #0x10 movs r3, #0x10 bl sub_0800290E cmp r0, #0 bne _080874DC ldr r2, [r4, #0x50] movs r1, #1 ldrb r4, [r4, #0xb] lsls r1, r4 ldr r0, [r2, #0x20] bics r0, r1 str r0, [r2, #0x20] bl sub_0805E780 _080874DC: pop {r4, pc} .align 2, 0 thumb_func_start sub_080874E0 sub_080874E0: @ 0x080874E0 push {lr} ldr r2, _080874F4 @ =gUnk_081208A0 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080874F4: .4byte gUnk_081208A0 thumb_func_start sub_080874F8 sub_080874F8: @ 0x080874F8 push {lr} bl sub_0805E780 pop {pc} thumb_func_start nullsub_117 nullsub_117: @ 0x08087500 bx lr .align 2, 0 thumb_func_start sub_08087504 sub_08087504: @ 0x08087504 push {r4, lr} adds r4, r0, #0 bl sub_0805E3B0 cmp r0, #0 bne _08087520 ldr r0, _08087524 @ =gUnk_081208B8 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _08087520: pop {r4, pc} .align 2, 0 _08087524: .4byte gUnk_081208B8 thumb_func_start sub_08087528 sub_08087528: @ 0x08087528 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldr r0, _08087590 @ =gLinkEntity ldrb r0, [r0, #0x14] lsrs r0, r0, #1 strb r0, [r4, #0x14] ldrb r1, [r4, #0x19] movs r2, #0x3f adds r0, r2, #0 ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x19] adds r3, r4, #0 adds r3, #0x29 ldrb r1, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r3] ldrb r1, [r4, #0x1b] lsrs r0, r1, #6 subs r0, #1 lsls r0, r0, #6 ands r2, r1 orrs r2, r0 strb r2, [r4, #0x1b] ldrb r0, [r4, #0xb] cmp r0, #0 beq _08087594 ldrb r1, [r4, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x1a] ldrb r0, [r4, #0x14] cmp r0, #1 bne _08087588 ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x18] _08087588: adds r0, r4, #0 bl sub_08087640 b _080875DC .align 2, 0 _08087590: .4byte gLinkEntity _08087594: ldr r0, _080875B4 @ =gUnk_02033A90 ldrb r0, [r0, #1] movs r1, #4 cmp r0, #0x10 bne _080875A2 movs r1, #0xb5 lsls r1, r1, #1 _080875A2: adds r0, r4, #0 bl sub_0801D2B4 ldrb r0, [r4, #0x14] cmp r0, #1 beq _080875B8 cmp r0, #3 bne _080875CE b _080875C0 .align 2, 0 _080875B4: .4byte gUnk_02033A90 _080875B8: ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x18] _080875C0: ldrb r0, [r4, #0xa] cmp r0, #0x40 bne _080875DC ldrh r0, [r4, #0x32] adds r0, #4 strh r0, [r4, #0x32] b _080875DC _080875CE: ldrb r0, [r4, #0xa] cmp r0, #0x40 bne _080875DC ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x18] _080875DC: adds r0, r4, #0 movs r1, #3 bl sub_0805E3A0 ldrb r1, [r4, #0xb] lsls r1, r1, #2 ldrb r0, [r4, #0x14] adds r1, r1, r0 adds r0, r4, #0 bl UpdateSprite pop {r4, pc} thumb_func_start sub_080875F4 sub_080875F4: @ 0x080875F4 push {r4, r5, lr} adds r4, r0, #0 bl sub_08004274 adds r5, r4, #0 adds r5, #0x5a ldrb r1, [r5] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808760E bl sub_0805E780 _0808760E: ldrb r0, [r4, #0xb] cmp r0, #0 beq _08087638 ldr r0, _0808763C @ =gLinkEntity adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d lsrs r1, r1, #0x1d ldrb r0, [r5] subs r0, #1 subs r1, r1, r0 adds r3, r4, #0 adds r3, #0x29 movs r0, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] _08087638: pop {r4, r5, pc} .align 2, 0 _0808763C: .4byte gLinkEntity thumb_func_start sub_08087640 sub_08087640: @ 0x08087640 push {r4, r5, r6, lr} adds r4, r0, #0 movs r0, #0x2e ldrsh r5, [r4, r0] movs r1, #0x32 ldrsh r6, [r4, r1] ldrb r1, [r4, #0x14] lsls r1, r1, #1 ldr r0, _08087684 @ =gUnk_081208C0 adds r1, r1, r0 movs r0, #0 ldrsb r0, [r1, r0] ldrh r2, [r4, #0x2e] adds r0, r0, r2 strh r0, [r4, #0x2e] movs r0, #1 ldrsb r0, [r1, r0] ldrh r1, [r4, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] ldr r0, _08087688 @ =gRoomControls ldrh r1, [r0, #4] ldr r0, _0808768C @ =0x00000403 movs r2, #0x16 cmp r1, r0 bne _08087676 movs r2, #0x17 _08087676: adds r0, r4, #0 adds r1, r2, #0 bl sub_0805457C strh r5, [r4, #0x2e] strh r6, [r4, #0x32] pop {r4, r5, r6, pc} .align 2, 0 _08087684: .4byte gUnk_081208C0 _08087688: .4byte gRoomControls _0808768C: .4byte 0x00000403 thumb_func_start sub_08087690 sub_08087690: @ 0x08087690 push {lr} ldr r2, _080876A4 @ =gUnk_08120A0C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080876A4: .4byte gUnk_08120A0C thumb_func_start sub_080876A8 sub_080876A8: @ 0x080876A8 push {lr} mov ip, r0 movs r0, #1 mov r1, ip strb r0, [r1, #0xc] movs r0, #0xb0 lsls r0, r0, #0xa str r0, [r1, #0x20] ldrb r2, [r1, #0x14] lsls r0, r2, #2 movs r1, #0x10 eors r0, r1 mov r3, ip strb r0, [r3, #0x15] lsls r2, r2, #0x18 cmp r2, #0 bne _080876E2 adds r3, #0x29 ldrb r2, [r3] lsls r1, r2, #0x1d lsrs r1, r1, #0x1d subs r1, #1 movs r0, #7 ands r1, r0 movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] _080876E2: ldr r1, _08087760 @ =gUnk_08120A20 mov r2, ip ldrb r0, [r2, #0x14] adds r0, r0, r1 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r3, [r2, #0x2e] adds r0, r0, r3 strh r0, [r2, #0x2e] ldrb r0, [r2, #0x14] adds r0, #1 adds r0, r0, r1 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r2, #0x32] adds r0, r0, r1 strh r0, [r2, #0x32] ldr r3, _08087764 @ =gUnk_08120A18 ldrb r0, [r2, #0xf] lsls r0, r0, #2 adds r0, r0, r3 ldrb r1, [r0, #3] mov r0, ip adds r0, #0x60 strh r1, [r0] ldrb r0, [r2, #0xf] lsls r0, r0, #2 adds r0, r0, r3 ldrb r1, [r0, #1] movs r0, #0xf ands r1, r0 ldrb r2, [r2, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 mov r2, ip strb r0, [r2, #0x1a] ldrb r0, [r2, #0xf] lsls r0, r0, #2 adds r0, r0, r3 ldrb r0, [r0, #2] str r0, [r2, #0x6c] ldr r0, _08087768 @ =gLinkEntity adds r0, #0x38 ldrb r1, [r0] mov r0, ip adds r0, #0x38 strb r1, [r0] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r2, #0x24] ldrb r0, [r2, #0xf] lsls r0, r0, #2 adds r0, r0, r3 ldrb r1, [r0] mov r0, ip bl UpdateSprite pop {pc} .align 2, 0 _08087760: .4byte gUnk_08120A20 _08087764: .4byte gUnk_08120A18 _08087768: .4byte gLinkEntity thumb_func_start sub_0808776C sub_0808776C: @ 0x0808776C push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x6c] cmp r0, #0 beq _08087788 subs r0, #1 str r0, [r4, #0x6c] ldr r0, _08087784 @ =gLinkState adds r0, #0x3d ldrb r0, [r0] b _08087798 .align 2, 0 _08087784: .4byte gLinkState _08087788: adds r0, r4, #0 bl sub_080AEFE0 movs r1, #0xa0 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 _08087798: cmp r0, #0 bne _080877A0 movs r0, #2 strb r0, [r4, #0xc] _080877A0: pop {r4, pc} .align 2, 0 thumb_func_start sub_080877A4 sub_080877A4: @ 0x080877A4 push {r4, lr} adds r4, r0, #0 bl sub_080002D0 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 adds r1, r0, #0 cmp r0, #0x25 beq _080877D0 cmp r0, #0x25 bgt _080877C4 cmp r0, #0x21 beq _080877CA cmp r0, #0x24 beq _080877D6 b _080877E2 _080877C4: cmp r1, #0x30 beq _080877D6 b _080877E2 _080877CA: adds r0, r4, #0 movs r1, #0 b _080877DA _080877D0: adds r0, r4, #0 movs r1, #0xc b _080877DA _080877D6: adds r0, r4, #0 movs r1, #0xb _080877DA: movs r2, #0 bl CreateFx b _08087804 _080877E2: ldrb r0, [r4, #0xb] cmp r0, #0 beq _08087804 cmp r0, #0xf bne _080877F8 ldrb r1, [r4, #0xe] adds r0, r4, #0 movs r2, #0x80 bl CreateFx b _08087804 _080877F8: ldrb r1, [r4, #0xb] ldrb r2, [r4, #0xe] adds r0, r4, #0 movs r3, #0 bl CreateObjectWithParent _08087804: bl sub_0805E780 pop {r4, pc} .align 2, 0 thumb_func_start sub_0808780C sub_0808780C: @ 0x0808780C push {lr} ldr r2, _08087820 @ =gUnk_08120A28 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08087820: .4byte gUnk_08120A28 thumb_func_start sub_08087824 sub_08087824: @ 0x08087824 push {r4, lr} adds r4, r0, #0 adds r0, #0x38 ldrb r0, [r0] cmp r0, #0 bne _08087836 adds r0, r4, #0 bl sub_08016A30 _08087836: movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r1, r4, #0 adds r1, #0x3c movs r0, #0x13 strb r0, [r1] adds r1, #9 movs r0, #0xff strb r0, [r1] subs r1, #6 movs r0, #0xa9 strb r0, [r1] adds r1, #1 movs r0, #0x16 strb r0, [r1] ldr r0, _08087884 @ =gUnk_08120A54 ldr r0, [r0] str r0, [r4, #0x48] subs r1, #5 movs r0, #0x8b strb r0, [r1] adds r0, r4, #0 bl sub_080878CC adds r0, r4, #0 movs r1, #1 bl UpdateSprite adds r0, r4, #0 bl sub_0801766C movs r0, #0xfd bl sub_08004488 pop {r4, pc} .align 2, 0 _08087884: .4byte gUnk_08120A54 thumb_func_start sub_08087888 sub_08087888: @ 0x08087888 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080878A4 bl sub_0805E780 b _080878C8 _080878A4: lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #4 bhi _080878C0 ldr r0, _080878BC @ =gUnk_08120A54 ldrb r1, [r2] lsls r1, r1, #2 adds r1, r1, r0 ldr r0, [r1] str r0, [r4, #0x48] b _080878C8 .align 2, 0 _080878BC: .4byte gUnk_08120A54 _080878C0: ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] _080878C8: pop {r4, pc} .align 2, 0 thumb_func_start sub_080878CC sub_080878CC: @ 0x080878CC push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} sub sp, #0x10 adds r7, r0, #0 movs r1, #0x2e ldrsh r0, [r7, r1] str r0, [sp] movs r0, #0x32 ldrsh r2, [r7, r0] str r2, [sp, #4] adds r0, r7, #0 adds r0, #0x38 ldrb r0, [r0] mov r8, r0 movs r0, #0x10 rsbs r0, r0, #0 mov r1, r8 lsls r1, r1, #0x18 str r1, [sp, #8] _080878F8: movs r2, #0x10 rsbs r2, r2, #0 mov sb, r2 ldr r1, [sp] adds r1, r1, r0 mov sl, r1 adds r0, #0x10 str r0, [sp, #0xc] mov r6, sl _0808790A: ldr r2, _0808795C @ =gRoomControls ldrh r0, [r2, #6] subs r0, r6, r0 lsrs r4, r0, #4 movs r0, #0x3f ands r4, r0 ldr r5, [sp, #4] add r5, sb ldrh r0, [r2, #8] subs r0, r5, r0 lsrs r0, r0, #4 movs r1, #0x3f ands r0, r1 lsls r0, r0, #6 orrs r4, r0 adds r0, r4, #0 ldr r2, [sp, #8] lsrs r1, r2, #0x18 bl sub_080002C8 cmp r0, #0x2e bne _08087970 adds r0, r4, #0 mov r1, r8 bl sub_080002B0 adds r1, r0, #0 movs r0, #0xda lsls r0, r0, #2 cmp r1, r0 bhi _08087960 subs r0, #1 cmp r1, r0 blo _08087960 adds r0, r7, #0 movs r1, #3 adds r2, r6, #0 adds r3, r5, #0 bl sub_08008796 b _0808797C .align 2, 0 _0808795C: .4byte gRoomControls _08087960: ldr r0, _0808796C @ =0x00004022 adds r1, r4, #0 mov r2, r8 bl UpdateCollisionLayer b _0808797C .align 2, 0 _0808796C: .4byte 0x00004022 _08087970: adds r0, r7, #0 movs r1, #3 mov r2, sl adds r3, r5, #0 bl sub_08008796 _0808797C: movs r0, #0x10 add sb, r0 mov r1, sb cmp r1, #0x10 ble _0808790A ldr r0, [sp, #0xc] cmp r0, #0x10 ble _080878F8 add sp, #0x10 pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08087998 sub_08087998: @ 0x08087998 push {r4, lr} adds r4, r0, #0 ldr r0, _080879C0 @ =gUnk_08120A68 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl sub_08004274 ldrb r0, [r4, #0xe] cmp r0, #0 beq _080879C4 subs r0, #1 strb r0, [r4, #0xe] b _080879EA .align 2, 0 _080879C0: .4byte gUnk_08120A68 _080879C4: adds r0, r4, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0xa bne _080879D8 adds r0, r4, #0 movs r1, #0xd bl UpdateSprite b _080879EA _080879D8: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080879EA bl sub_0805E780 _080879EA: movs r1, #0x24 ldrsh r0, [r4, r1] cmp r0, #0 beq _08087A0C adds r0, r4, #0 bl sub_0806F69C ldrh r1, [r4, #0x24] movs r2, #0x24 ldrsh r0, [r4, r2] cmp r0, #0x10 ble _08087A08 adds r0, r1, #0 subs r0, #0x10 b _08087A0A _08087A08: movs r0, #0 _08087A0A: strh r0, [r4, #0x24] _08087A0C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08087A10 sub_08087A10: @ 0x08087A10 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4, #0xb] cmp r0, #0 beq _08087A26 adds r0, r4, #0 movs r1, #3 bl sub_0801D2B4 _08087A26: ldrb r0, [r4, #0xa] cmp r0, #2 bls _08087A3C ldr r0, _08087A4C @ =gUnk_08120A78 ldrb r1, [r4, #0xa] subs r1, #3 adds r1, r1, r0 ldrb r1, [r1] adds r0, r4, #0 bl sub_0801D2B4 _08087A3C: ldrb r0, [r4, #0xa] cmp r0, #4 bhi _08087AF0 lsls r0, r0, #2 ldr r1, _08087A50 @ =_08087A54 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08087A4C: .4byte gUnk_08120A78 _08087A50: .4byte _08087A54 _08087A54: @ jump table .4byte _08087A76 @ case 0 .4byte _08087AF0 @ case 1 .4byte _08087AA0 @ case 2 .4byte _08087A76 @ case 3 .4byte _08087A68 @ case 4 _08087A68: adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip _08087A76: ldrb r1, [r4, #0x10] movs r0, #0x80 movs r2, #0 orrs r0, r1 strb r0, [r4, #0x10] adds r1, r4, #0 adds r1, #0x45 movs r0, #1 strb r0, [r1] subs r1, #9 movs r0, #7 strb r0, [r1] adds r1, #3 movs r0, #0xaa strb r0, [r1] subs r1, #4 movs r0, #0xe strb r0, [r1] ldr r0, _08087AE4 @ =gUnk_08120A8C str r0, [r4, #0x48] strb r2, [r4, #0x1c] _08087AA0: bl Random ldr r2, _08087AE8 @ =gUnk_08120A7A movs r3, #3 adds r1, r0, #0 ands r1, r3 adds r1, r1, r2 ldrb r1, [r1] strb r1, [r4, #0xe] lsrs r2, r0, #8 ands r2, r3 movs r1, #0x10 ands r1, r0 cmp r1, #0 beq _08087AC0 rsbs r2, r2, #0 _08087AC0: ldrh r0, [r4, #0x2e] adds r0, r0, r2 strh r0, [r4, #0x2e] ldrh r0, [r4, #0x32] adds r0, r0, r2 strh r0, [r4, #0x32] ldr r0, _08087AEC @ =gLinkEntity adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] adds r0, r4, #0 movs r1, #0xa bl UpdateSprite b _08087AF8 .align 2, 0 _08087AE4: .4byte gUnk_08120A8C _08087AE8: .4byte gUnk_08120A7A _08087AEC: .4byte gLinkEntity _08087AF0: adds r0, r4, #0 movs r1, #0x10 bl UpdateSprite _08087AF8: pop {r4, pc} .align 2, 0 thumb_func_start sub_08087AFC sub_08087AFC: @ 0x08087AFC push {r4, lr} adds r4, r0, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08087B56 movs r0, #0x7f ands r0, r1 cmp r0, #0x16 beq _08087B3C cmp r0, #0x16 bgt _08087B1E cmp r0, #0x13 beq _08087B4E b _08087B56 _08087B1E: cmp r0, #0x1c bgt _08087B56 cmp r0, #0x1b blt _08087B56 ldr r1, [r4, #0x4c] adds r0, r1, #0 adds r0, #0x84 ldr r0, [r0] adds r1, #0x80 ldr r1, [r1] ldr r2, [r4, #0x2c] ldr r3, [r4, #0x30] bl sub_080045D4 b _08087B44 _08087B3C: ldr r0, [r4, #0x4c] adds r1, r4, #0 bl sub_080045C4 _08087B44: strb r0, [r4, #0x15] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r4, #0x24] b _08087B56 _08087B4E: movs r1, #0 movs r0, #3 strb r0, [r4, #0xc] strb r1, [r4, #0xd] _08087B56: pop {r4, pc} thumb_func_start sub_08087B58 sub_08087B58: @ 0x08087B58 push {lr} adds r2, r0, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08087B80 ldr r0, _08087B7C @ =gUnk_08120A80 ldrb r1, [r2, #0xd] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 b _08087B84 .align 2, 0 _08087B7C: .4byte gUnk_08120A80 _08087B80: movs r0, #1 strb r0, [r2, #0xc] _08087B84: pop {pc} .align 2, 0 thumb_func_start sub_08087B88 sub_08087B88: @ 0x08087B88 adds r2, r0, #0 adds r2, #0x46 movs r1, #0x80 lsls r1, r1, #1 strh r1, [r2] movs r1, #1 strb r1, [r0, #0xd] strb r1, [r0, #0x1d] bx lr .align 2, 0 thumb_func_start sub_08087B9C sub_08087B9C: @ 0x08087B9C push {lr} bl sub_0806F3E4 cmp r0, #0 beq _08087BAA bl sub_0805E780 _08087BAA: pop {pc} thumb_func_start sub_08087BAC sub_08087BAC: @ 0x08087BAC push {lr} ldr r2, _08087BC0 @ =gUnk_08120A94 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08087BC0: .4byte gUnk_08120A94 thumb_func_start sub_08087BC4 sub_08087BC4: @ 0x08087BC4 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] adds r0, #1 movs r5, #0 strb r0, [r4, #0xc] ldrb r0, [r4, #0xa] cmp r0, #1 beq _08087C04 cmp r0, #1 bgt _08087BE0 cmp r0, #0 beq _08087BEA b _08087CA6 _08087BE0: cmp r0, #2 beq _08087C64 cmp r0, #3 beq _08087C7C b _08087CA6 _08087BEA: movs r0, #0x5e bl sub_0807CBD0 cmp r0, #0 beq _08087C16 adds r1, r4, #0 adds r1, #0x7a movs r0, #1 strb r0, [r1] adds r0, r4, #0 bl sub_080787B4 b _08087C1C _08087C04: movs r0, #0x22 movs r1, #3 movs r2, #0 bl CreateObject cmp r0, #0 beq _08087C16 str r4, [r0, #0x50] str r0, [r4, #0x54] _08087C16: adds r0, r4, #0 adds r0, #0x7a strb r5, [r0] _08087C1C: ldrb r0, [r4, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08087C60 @ =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, #0x78 strh r1, [r0] adds r0, r4, #0 bl sub_08087F58 b _08087CA6 .align 2, 0 _08087C60: .4byte gRoomControls _08087C64: adds r0, r4, #0 adds r0, #0x7a strb r5, [r0] adds r0, r4, #0 movs r1, #7 bl sub_0805E3A0 adds r0, r4, #0 movs r1, #1 bl UpdateSprite b _08087CA6 _08087C7C: movs r0, #0x1e strb r0, [r4, #0xe] strb r5, [r4, #0xf] adds r1, r4, #0 adds r1, #0x81 movs r0, #1 strb r0, [r1] adds r0, r4, #0 adds r0, #0x7a strb r5, [r0] adds r0, #1 strb r5, [r0] adds r0, #5 strb r5, [r0] adds r0, r4, #0 bl sub_0808804C adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 _08087CA6: pop {r4, r5, pc} thumb_func_start sub_08087CA8 sub_08087CA8: @ 0x08087CA8 push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x7a ldrb r0, [r5] cmp r0, #1 beq _08087CCA cmp r0, #1 bgt _08087D02 cmp r0, #0 bne _08087D02 movs r0, #1 strb r0, [r5] adds r0, r4, #0 bl sub_080787B4 b _08087D1A _08087CCA: adds r1, r4, #0 adds r1, #0x39 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 beq _08087D1A movs r0, #0 strb r0, [r1] bl sub_080791D0 movs r0, #0x5e bl sub_0807CBD0 cmp r0, #0 beq _08087CFA movs r0, #2 strb r0, [r5] bl sub_0807CD10 movs r0, #7 movs r1, #0xff bl sub_080A7138 b _08087D1A _08087CFA: movs r0, #5 bl sub_0807CD10 b _08087D1A _08087D02: movs r0, #2 bl sub_0807CC3C cmp r0, #0 bne _08087D1A adds r1, r4, #0 adds r1, #0x7a movs r0, #1 strb r0, [r1] adds r0, r4, #0 bl sub_080787B4 _08087D1A: pop {r4, r5, pc} thumb_func_start sub_08087D1C sub_08087D1C: @ 0x08087D1C push {r4, r5, lr} adds r5, r0, #0 adds r4, r5, #0 adds r4, #0x7a ldrb r0, [r4] cmp r0, #1 beq _08087D60 cmp r0, #1 bgt _08087D34 cmp r0, #0 beq _08087D3A b _08087DB0 _08087D34: cmp r0, #2 beq _08087D5A b _08087DB0 _08087D3A: movs r0, #0 bl sub_0807CC3C cmp r0, #0 beq _08087DB0 movs r0, #0x5e bl sub_0807CBD0 cmp r0, #0 beq _08087D54 movs r0, #1 strb r0, [r4] b _08087DB0 _08087D54: movs r0, #2 strb r0, [r4] b _08087DB0 _08087D5A: movs r0, #0x5e bl sub_0807CCB4 _08087D60: adds r1, r5, #0 adds r1, #0x7a movs r0, #0 strb r0, [r1] ldr r0, [r5, #0x54] bl sub_08088328 movs r0, #0 bl sub_0807CD8C movs r0, #0x22 movs r1, #2 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08087DAA str r5, [r4, #0x50] adds r0, r5, #0 adds r0, #0x7d ldrb r0, [r0] strb r0, [r4, #0xf] ldr r1, _08087DB4 @ =gUnk_080FC3E4 ldrb r0, [r4, #0xf] lsls r0, r0, #3 adds r0, r0, r1 ldrb r0, [r0, #7] strb r0, [r4, #0xb] movs r2, #0x80 lsls r2, r2, #0xc movs r3, #0xe0 lsls r3, r3, #0xb adds r0, r5, #0 adds r1, r4, #0 bl PositionRelative _08087DAA: ldr r0, _08087DB8 @ =0x00000111 bl sub_08004488 _08087DB0: pop {r4, r5, pc} .align 2, 0 _08087DB4: .4byte gUnk_080FC3E4 _08087DB8: .4byte 0x00000111 thumb_func_start sub_08087DBC sub_08087DBC: @ 0x08087DBC push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r2, r4, #0 adds r2, #0x7a ldrb r0, [r2] cmp r0, #1 beq _08087E10 cmp r0, #1 bgt _08087E3C cmp r0, #0 bne _08087E3C adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08087E5A movs r0, #1 strb r0, [r2] movs r0, #0x28 strb r0, [r4, #0xe] ldr r1, _08087E0C @ =gUnk_08120AA8 ldrb r0, [r4, #0xb] adds r0, r0, r1 ldrb r1, [r0] adds r0, r4, #0 bl sub_0801D2B4 adds r0, r4, #0 movs r1, #2 bl UpdateSprite movs r0, #0x88 lsls r0, r0, #1 bl PlaySFX b _08087E5A .align 2, 0 _08087E0C: .4byte gUnk_08120AA8 _08087E10: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08087E5A ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08087E5A movs r0, #2 strb r0, [r2] bl sub_0807CD10 ldrb r1, [r4, #0xf] movs r0, #7 bl sub_080A7138 b _08087E5A _08087E3C: movs r0, #2 bl sub_0807CC3C cmp r0, #0 bne _08087E5A ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] movs r0, #4 bl sub_0807CD8C bl sub_0805E780 _08087E5A: pop {r4, pc} thumb_func_start sub_08087E5C sub_08087E5C: @ 0x08087E5C push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x7a ldrb r1, [r5] cmp r1, #1 beq _08087EAC cmp r1, #1 bgt _08087E74 cmp r1, #0 beq _08087E7A b _08087F4E _08087E74: cmp r1, #2 beq _08087F24 b _08087F4E _08087E7A: adds r0, r4, #0 adds r0, #0x7b ldrb r0, [r0] cmp r0, #4 bne _08087EA4 movs r0, #1 bl sub_0807CC3C cmp r0, #0 beq _08087F4E movs r0, #1 strb r0, [r5] adds r1, r4, #0 adds r1, #0x81 strb r0, [r1] bl sub_0807CD8C adds r0, r4, #0 bl sub_0808826C b _08087F1C _08087EA4: adds r0, r4, #0 bl sub_080880D8 b _08087F4E _08087EAC: ldrb r0, [r4, #0xe] cmp r0, #0 beq _08087EB6 subs r0, #1 strb r0, [r4, #0xe] _08087EB6: ldr r6, _08087ED4 @ =gUnk_03000FF0 ldrh r0, [r6, #2] ands r1, r0 cmp r1, #0 beq _08087ED8 movs r0, #0x6a bl PlaySFX movs r0, #2 strb r0, [r5] movs r0, #0x3c strb r0, [r4, #0xe] bl sub_08050384 b _08087F4E .align 2, 0 _08087ED4: .4byte gUnk_03000FF0 _08087ED8: adds r2, r4, #0 adds r2, #0x81 ldrb r7, [r2] ldrh r1, [r6] movs r0, #0x80 lsls r0, r0, #1 ands r0, r1 movs r3, #1 adds r5, r2, #0 cmp r0, #0 beq _08087EF0 movs r3, #0xa _08087EF0: ldrh r1, [r6, #4] ldr r0, _08087F00 @ =0xFFFFFEFF ands r1, r0 cmp r1, #0x40 beq _08087F04 cmp r1, #0x80 beq _08087F0E b _08087F16 .align 2, 0 _08087F00: .4byte 0xFFFFFEFF _08087F04: adds r0, r4, #0 adds r1, r3, #0 bl sub_08087F94 b _08087F16 _08087F0E: rsbs r1, r3, #0 adds r0, r4, #0 bl sub_08087F94 _08087F16: ldrb r5, [r5] cmp r7, r5 beq _08087F4E _08087F1C: adds r0, r4, #0 bl sub_080882A8 b _08087F4E _08087F24: movs r0, #0 strb r0, [r5] adds r1, r4, #0 adds r1, #0x7b movs r0, #4 strb r0, [r1] movs r0, #3 bl sub_0807CD10 ldr r0, _08087F50 @ =0x0000431A bl TextboxTryNoOverlap ldr r1, _08087F54 @ =gTextBox movs r0, #1 strb r0, [r1, #6] movs r0, #0xc strb r0, [r1, #7] adds r0, r4, #0 adds r0, #0x81 ldrb r0, [r0] str r0, [r1, #0x10] _08087F4E: pop {r4, r5, r6, r7, pc} .align 2, 0 _08087F50: .4byte 0x0000431A _08087F54: .4byte gTextBox thumb_func_start sub_08087F58 sub_08087F58: @ 0x08087F58 push {r4, r5, lr} ldrb r1, [r0, #0xa] cmp r1, #1 bgt _08087F8C cmp r1, #0 blt _08087F8C ldr r5, _08087F90 @ =0x00004022 adds r4, r0, #0 adds r4, #0x78 ldrh r1, [r4] subs r1, #1 adds r0, r5, #0 movs r2, #1 bl UpdateCollisionLayer ldrh r1, [r4] adds r0, r5, #0 movs r2, #1 bl UpdateCollisionLayer ldrh r1, [r4] adds r1, #1 adds r0, r5, #0 movs r2, #1 bl UpdateCollisionLayer _08087F8C: pop {r4, r5, pc} .align 2, 0 _08087F90: .4byte 0x00004022 thumb_func_start sub_08087F94 sub_08087F94: @ 0x08087F94 push {r4, r5, r6, r7, lr} adds r5, r0, #0 adds r4, r1, #0 movs r0, #0x5f bl sub_0807CBD0 cmp r0, #0 bne _08088014 adds r0, r5, #0 adds r0, #0x83 movs r1, #0 ldrsb r1, [r0, r1] mov ip, r1 adds r3, r1, r4 adds r7, r0, #0 cmp r4, #0 bge _08087FEA adds r2, r5, #0 adds r2, #0x82 movs r0, #0 ldrsb r0, [r2, r0] cmp r3, r0 bge _08087FD6 movs r1, #0 ldrsb r1, [r7, r1] ldrb r3, [r2] cmp r1, r0 beq _08088014 strb r3, [r7] adds r1, r5, #0 adds r1, #0x81 movs r0, #1 b _08087FE0 _08087FD6: strb r3, [r7] adds r1, r5, #0 adds r1, #0x81 ldrb r0, [r1] adds r0, r0, r4 _08087FE0: strb r0, [r1] movs r0, #0x69 bl PlaySFX b _08088032 _08087FEA: adds r1, r5, #0 adds r1, #0x81 ldrb r6, [r1] adds r2, r6, r4 ldr r0, _0808801C @ =gUnk_02002A40 adds r0, #0xc2 ldrh r0, [r0] cmp r2, r0 ble _08088008 cmp r0, r6 beq _08088014 adds r2, r0, #0 subs r4, r2, r6 mov r0, ip adds r3, r0, r4 _08088008: cmp r3, #0x64 ble _08088028 movs r0, #0 ldrsb r0, [r7, r0] cmp r0, #0x64 bne _08088020 _08088014: adds r0, r5, #0 bl sub_08088034 b _08088032 .align 2, 0 _0808801C: .4byte gUnk_02002A40 _08088020: movs r3, #0x64 mov r0, ip subs r4, r3, r0 adds r2, r6, r4 _08088028: strb r3, [r7] strb r2, [r1] movs r0, #0x69 bl PlaySFX _08088032: pop {r4, r5, r6, r7, pc} thumb_func_start sub_08088034 sub_08088034: @ 0x08088034 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] cmp r0, #0 bne _08088048 movs r0, #0x14 strb r0, [r1, #0xe] movs r0, #0x6d bl PlaySFX _08088048: pop {pc} .align 2, 0 thumb_func_start sub_0808804C sub_0808804C: @ 0x0808804C push {r4, r5, lr} adds r5, r0, #0 movs r4, #0 ldr r0, _08088060 @ =gUnk_02002A40 ldrb r0, [r0, #6] cmp r0, #0 beq _08088064 movs r4, #9 b _080880D0 .align 2, 0 _08088060: .4byte gUnk_02002A40 _08088064: movs r0, #6 bl GetProgressFlag cmp r0, #0 beq _08088072 movs r4, #7 b _080880D0 _08088072: movs r0, #0x80 lsls r0, r0, #4 movs r1, #0x77 bl GetProgressFlagWithOffset cmp r0, #0 beq _08088084 movs r4, #6 b _080880D0 _08088084: movs r0, #0xc0 lsls r0, r0, #2 movs r1, #0x32 bl GetProgressFlagWithOffset cmp r0, #0 beq _08088096 movs r4, #5 b _080880D0 _08088096: movs r0, #5 bl GetProgressFlag cmp r0, #0 beq _080880A4 movs r4, #4 b _080880D0 _080880A4: movs r0, #4 bl GetProgressFlag cmp r0, #0 beq _080880B2 movs r4, #3 b _080880D0 _080880B2: movs r0, #0x80 lsls r0, r0, #1 movs r1, #0x9c bl GetProgressFlagWithOffset cmp r0, #0 beq _080880C4 movs r4, #2 b _080880D0 _080880C4: movs r0, #3 bl GetProgressFlag cmp r0, #0 beq _080880D0 movs r4, #1 _080880D0: adds r0, r5, #0 adds r0, #0x7c strb r4, [r0] pop {r4, r5, pc} thumb_func_start sub_080880D8 sub_080880D8: @ 0x080880D8 push {r4, r5, r6, r7, lr} adds r7, r0, #0 adds r0, #0x7b ldrb r1, [r0] ldr r0, _08088158 @ =gUnk_08120AAC adds r6, r1, r0 ldrb r4, [r6] ldrb r0, [r6, #1] cmp r4, r0 bhs _0808810A adds r5, r7, #0 adds r5, #0x80 _080880F0: adds r0, r7, #0 adds r1, r4, #0 bl sub_08088160 cmp r0, #0 beq _08088102 ldrb r0, [r5] adds r0, #1 strb r0, [r5] _08088102: adds r4, #1 ldrb r0, [r6, #1] cmp r4, r0 blo _080880F0 _0808810A: adds r1, r7, #0 adds r1, #0x7b ldrb r0, [r1] adds r0, #1 strb r0, [r1] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #4 bne _08088156 ldr r5, _0808815C @ =gUnk_02002A40 adds r0, r7, #0 adds r0, #0x80 ldrb r1, [r5, #9] adds r4, r0, #0 ldrb r0, [r4] cmp r1, r0 beq _0808813A cmp r1, #0 beq _08088136 movs r0, #6 bl sub_0807CD10 _08088136: ldrb r0, [r4] strb r0, [r5, #9] _0808813A: movs r0, #0x5f bl sub_0807CBD0 cmp r0, #0 beq _08088156 ldr r0, _0808815C @ =gUnk_02002A40 adds r0, #0xb0 ldrb r1, [r4] ldrb r0, [r0] cmp r1, r0 beq _08088156 movs r0, #0x5f bl sub_0807CD34 _08088156: pop {r4, r5, r6, r7, pc} .align 2, 0 _08088158: .4byte gUnk_08120AAC _0808815C: .4byte gUnk_02002A40 thumb_func_start sub_08088160 sub_08088160: @ 0x08088160 push {r4, lr} adds r2, r0, #0 lsls r1, r1, #3 ldr r0, _08088188 @ =gUnk_080FC3E4 adds r1, r1, r0 movs r4, #0 adds r0, r2, #0 adds r0, #0x7c ldrb r0, [r0] ldrb r3, [r1, #6] cmp r0, r3 bhs _08088266 ldrb r0, [r1, #6] cmp r0, #0x10 beq _0808819E cmp r0, #0x10 bgt _0808818C cmp r0, #8 beq _08088194 b _08088268 .align 2, 0 _08088188: .4byte gUnk_080FC3E4 _0808818C: cmp r0, #0x20 beq _080881A6 cmp r0, #0x40 bne _08088268 _08088194: ldr r0, [r1] ldrh r1, [r1, #4] bl GetProgressFlagWithOffset b _08088262 _0808819E: ldrh r0, [r1, #4] bl sub_0801E7F4 b _08088262 _080881A6: ldrh r0, [r1, #4] cmp r0, #5 bhi _08088268 lsls r0, r0, #2 ldr r1, _080881B8 @ =_080881BC adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080881B8: .4byte _080881BC _080881BC: @ jump table .4byte _080881D4 @ case 0 .4byte _080881F0 @ case 1 .4byte _080881FE @ case 2 .4byte _0808821A @ case 3 .4byte _08088236 @ case 4 .4byte _08088252 @ case 5 _080881D4: movs r0, #0x20 bl sub_0801E7F4 cmp r0, #0 bne _08088266 movs r0, #0x10 bl sub_0801E7F4 cmp r0, #0 bne _08088266 movs r0, #0x19 _080881EA: bl sub_0801E7F4 b _08088262 _080881F0: adds r0, r2, #0 adds r0, #0x7c ldrb r0, [r0] cmp r0, #4 bls _08088268 movs r0, #0x28 b _080881EA _080881FE: movs r0, #0x54 bl sub_0801E7F4 cmp r0, #0 bne _08088266 movs r0, #0x56 bl sub_0801E7F4 cmp r0, #0 bne _08088266 movs r0, #0x3d bl sub_0801E7F4 b _08088262 _0808821A: movs r0, #0x3b bl sub_0801E7F4 cmp r0, #0 bne _08088266 movs r0, #0x4a bl sub_0801E7F4 cmp r0, #0 bne _08088266 movs r0, #0xd bl sub_0801E7F4 b _08088262 _08088236: movs r0, #0x49 bl sub_0801E7F4 cmp r0, #0 bne _08088266 movs r0, #0x55 bl sub_0801E7F4 cmp r0, #0 bne _08088266 movs r0, #0x3c bl sub_0801E7F4 b _08088262 _08088252: adds r0, r2, #0 adds r0, #0x7c ldrb r0, [r0] cmp r0, #1 bls _08088268 movs r0, #0x12 bl GetProgressFlag _08088262: cmp r0, #0 beq _08088268 _08088266: movs r4, #1 _08088268: adds r0, r4, #0 pop {r4, pc} thumb_func_start sub_0808826C sub_0808826C: @ 0x0808826C push {r4, r5, lr} adds r5, r0, #0 movs r4, #0x64 adds r0, #0x80 ldrb r1, [r0] ldr r0, _080882A4 @ =gUnk_02002A40 adds r0, #0xb0 ldrb r0, [r0] subs r0, r1, r0 muls r4, r0, r4 adds r0, r4, #0 bl __divsi3 adds r4, r0, #0 cmp r4, #0 bne _08088298 movs r0, #0x5f bl sub_0807CBD0 cmp r0, #0 bne _08088298 movs r4, #1 _08088298: adds r0, r5, #0 adds r0, #0x83 strb r4, [r0] subs r0, #1 strb r4, [r0] pop {r4, r5, pc} .align 2, 0 _080882A4: .4byte gUnk_02002A40 thumb_func_start sub_080882A8 sub_080882A8: @ 0x080882A8 push {r4, r5, r6, lr} adds r6, r0, #0 bl sub_08050384 adds r0, r6, #0 adds r0, #0x81 ldrb r0, [r0] ldr r4, _080882F4 @ =gUnk_020227E8 ldr r5, _080882F8 @ =0x00202020 adds r1, r4, #0 adds r2, r5, #0 bl sub_08057044 adds r0, r6, #0 adds r0, #0x83 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 adds r4, #8 adds r1, r4, #0 adds r2, r5, #0 bl sub_08057044 movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] cmp r0, #0 bne _08088304 ldr r1, _080882FC @ =gUnk_08120AE4 ldrb r0, [r6, #0xb] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] ldr r1, _08088300 @ =gUnk_08120AB4 bl sub_0805F46C b _08088314 .align 2, 0 _080882F4: .4byte gUnk_020227E8 _080882F8: .4byte 0x00202020 _080882FC: .4byte gUnk_08120AE4 _08088300: .4byte gUnk_08120AB4 _08088304: ldr r1, _0808831C @ =gUnk_08120AE4 ldrb r0, [r6, #0xb] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] ldr r1, _08088320 @ =gUnk_08120ACC bl sub_0805F46C _08088314: ldr r1, _08088324 @ =gLCDControls movs r0, #1 strh r0, [r1, #0xe] pop {r4, r5, r6, pc} .align 2, 0 _0808831C: .4byte gUnk_08120AE4 _08088320: .4byte gUnk_08120ACC _08088324: .4byte gLCDControls thumb_func_start sub_08088328 sub_08088328: @ 0x08088328 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r6, r0, #0 movs r4, #0x7f _08088332: bl Random adds r5, r0, #0 ands r5, r4 cmp r5, #0x63 bhi _08088332 adds r0, r6, #0 adds r0, #0x81 ldrb r0, [r0] rsbs r0, r0, #0 bl sub_080542C0 bl Random movs r1, #0x7f ands r1, r0 adds r4, r1, #1 adds r7, r4, #0 adds r0, r6, #0 bl sub_08088424 adds r0, r6, #0 adds r0, #0x83 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r5, r0 bhs _080883A4 movs r5, #0 movs r0, #0x7d adds r0, r0, r6 mov r8, r0 _08088372: cmp r5, #0 bne _080883E2 cmp r4, #0x88 bls _0808837C movs r4, #1 _0808837C: adds r0, r6, #0 adds r1, r4, #0 bl sub_08088160 cmp r0, #0 beq _0808839C ldr r0, _08088398 @ =gUnk_02002B0E adds r1, r4, #0 bl sub_0801D5A8 cmp r0, #0 bne _0808839C movs r5, #1 b _0808839E .align 2, 0 _08088398: .4byte gUnk_02002B0E _0808839C: adds r4, #1 _0808839E: cmp r7, r4 bne _08088372 b _080883DE _080883A4: movs r5, #1 movs r0, #0x7d adds r0, r0, r6 mov r8, r0 _080883AC: cmp r5, #0 beq _08088414 cmp r4, #0x88 bls _080883B6 movs r4, #1 _080883B6: adds r0, r6, #0 adds r1, r4, #0 bl sub_08088160 cmp r0, #0 beq _080883D8 ldr r0, _080883D4 @ =gUnk_02002B0E adds r1, r4, #0 bl sub_0801D5A8 cmp r0, #0 beq _080883D8 movs r5, #0 b _080883DA .align 2, 0 _080883D4: .4byte gUnk_02002B0E _080883D8: adds r4, #1 _080883DA: cmp r7, r4 bne _080883AC _080883DE: cmp r5, #0 beq _08088414 _080883E2: ldr r0, _08088404 @ =gUnk_02002A40 adds r0, #0xb0 ldrb r1, [r0] adds r1, #1 strb r1, [r0] adds r0, r6, #0 adds r0, #0x80 lsls r1, r1, #0x18 lsrs r1, r1, #0x18 ldrb r0, [r0] cmp r1, r0 beq _08088408 movs r0, #7 bl sub_0807CD10 b _08088414 .align 2, 0 _08088404: .4byte gUnk_02002A40 _08088408: movs r0, #0x5f bl sub_0807CCB4 movs r0, #8 bl sub_0807CD10 _08088414: mov r0, r8 strb r4, [r0] ldr r0, [r6, #0x50] adds r0, #0x7d strb r4, [r0] pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08088424 sub_08088424: @ 0x08088424 push {lr} adds r1, r0, #0 ldr r0, _08088440 @ =gUnk_02002A40 adds r0, #0xb0 ldrb r0, [r0] cmp r0, #0x31 bhi _08088444 adds r1, #0x83 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0xe bgt _08088476 movs r0, #0xf b _08088474 .align 2, 0 _08088440: .4byte gUnk_02002A40 _08088444: cmp r0, #0x4f bhi _08088456 adds r1, #0x83 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0xb bgt _08088476 movs r0, #0xc b _08088474 _08088456: cmp r0, #0x6d bhi _08088468 adds r1, #0x83 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #8 bgt _08088476 movs r0, #9 b _08088474 _08088468: adds r1, #0x83 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #5 bgt _08088476 movs r0, #6 _08088474: strb r0, [r1] _08088476: pop {pc} thumb_func_start sub_08088478 sub_08088478: @ 0x08088478 push {r4, lr} movs r4, #0 movs r0, #8 bl sub_0807CC3C cmp r0, #0 bne _080884A4 movs r0, #7 bl sub_0807CC3C cmp r0, #0 bne _0808849C ldr r1, _08088498 @ =0x00004322 movs r4, #1 b _080884D2 .align 2, 0 _08088498: .4byte 0x00004322 _0808849C: ldr r1, _080884A0 @ =0x00004325 b _080884D2 .align 2, 0 _080884A0: .4byte 0x00004325 _080884A4: ldr r1, _080884C0 @ =gUnk_02002A40 adds r0, r1, #0 adds r0, #0xb0 ldrb r0, [r0] cmp r0, #0x82 beq _080884C8 cmp r0, #0x88 bne _080884D0 adds r1, #0xb1 movs r0, #0xff strb r0, [r1] ldr r1, _080884C4 @ =0x00004329 b _080884D2 .align 2, 0 _080884C0: .4byte gUnk_02002A40 _080884C4: .4byte 0x00004329 _080884C8: ldrb r0, [r1, #6] ldr r1, _080884F4 @ =0x00004328 cmp r0, #0 beq _080884D2 _080884D0: ldr r1, _080884F8 @ =0x00004327 _080884D2: adds r0, r1, #0 bl TextboxTryNoOverlap ldr r1, _080884FC @ =gTextBox movs r0, #1 strb r0, [r1, #6] movs r0, #0xc strb r0, [r1, #7] cmp r4, #0 beq _080884EA movs r0, #5 str r0, [r1, #0x10] _080884EA: ldr r1, _08088500 @ =gLinkEntity movs r0, #6 strb r0, [r1, #0x14] pop {r4, pc} .align 2, 0 _080884F4: .4byte 0x00004328 _080884F8: .4byte 0x00004327 _080884FC: .4byte gTextBox _08088500: .4byte gLinkEntity thumb_func_start sub_08088504 sub_08088504: @ 0x08088504 push {lr} ldr r0, _08088518 @ =gUnk_02002A40 adds r0, #0xb0 ldrb r0, [r0] cmp r0, #0x82 beq _08088520 cmp r0, #0x88 bne _08088528 ldr r0, _0808851C @ =0x0000432F b _0808852A .align 2, 0 _08088518: .4byte gUnk_02002A40 _0808851C: .4byte 0x0000432F _08088520: ldr r0, _08088524 @ =0x00004314 b _0808852A .align 2, 0 _08088524: .4byte 0x00004314 _08088528: ldr r0, _0808853C @ =0x00004311 _0808852A: bl TextboxTryNoOverlap ldr r0, _08088540 @ =gTextBox movs r1, #1 strb r1, [r0, #6] movs r1, #0xc strb r1, [r0, #7] pop {pc} .align 2, 0 _0808853C: .4byte 0x00004311 _08088540: .4byte gTextBox thumb_func_start sub_08088544 sub_08088544: @ 0x08088544 push {lr} ldr r0, _08088568 @ =gUnk_02002A40 adds r0, #0xb0 ldrb r0, [r0] ldr r1, _0808856C @ =0x00004315 cmp r0, #0x82 beq _08088554 subs r1, #7 _08088554: adds r0, r1, #0 bl TextboxTryNoOverlap ldr r0, _08088570 @ =gTextBox movs r1, #1 strb r1, [r0, #6] movs r1, #0xc strb r1, [r0, #7] pop {pc} .align 2, 0 _08088568: .4byte gUnk_02002A40 _0808856C: .4byte 0x00004315 _08088570: .4byte gTextBox thumb_func_start sub_08088574 sub_08088574: @ 0x08088574 push {lr} movs r0, #9 bl sub_0807CC3C cmp r0, #0 beq _08088594 movs r0, #0x5f bl sub_0807CBD0 ldr r1, _08088590 @ =0x0000430C cmp r0, #0 beq _08088596 adds r1, #7 b _08088596 .align 2, 0 _08088590: .4byte 0x0000430C _08088594: ldr r1, _080885A8 @ =0x0000430B _08088596: adds r0, r1, #0 bl TextboxTryNoOverlap ldr r0, _080885AC @ =gTextBox movs r1, #1 strb r1, [r0, #6] movs r1, #0xc strb r1, [r0, #7] pop {pc} .align 2, 0 _080885A8: .4byte 0x0000430B _080885AC: .4byte gTextBox thumb_func_start sub_080885B0 sub_080885B0: @ 0x080885B0 push {lr} movs r0, #8 bl sub_0807CC3C cmp r0, #0 bne _080885E8 movs r0, #7 bl sub_0807CC3C cmp r0, #0 bne _0808860A movs r0, #5 bl ModRupees ldr r0, _080885E0 @ =0x00004326 bl TextboxTryNoOverlap ldr r1, _080885E4 @ =gTextBox movs r0, #1 strb r0, [r1, #6] movs r0, #0xc strb r0, [r1, #7] b _0808860A .align 2, 0 _080885E0: .4byte 0x00004326 _080885E4: .4byte gTextBox _080885E8: ldr r1, _08088618 @ =gUnk_02002A40 adds r0, r1, #0 adds r0, #0xb1 ldrb r0, [r0] cmp r0, #0 beq _0808860A adds r1, #0xbb movs r0, #1 strb r0, [r1] movs r0, #0x3e movs r1, #0 movs r2, #0 bl sub_080A7C00 movs r0, #0x59 bl sub_0807CD04 _0808860A: movs r0, #8 bl sub_0807CD8C movs r0, #7 bl sub_0807CD8C pop {pc} .align 2, 0 _08088618: .4byte gUnk_02002A40 thumb_func_start sub_0808861C sub_0808861C: @ 0x0808861C push {r4, lr} adds r4, r1, #0 movs r0, #0xa8 movs r1, #0x54 movs r2, #0xc movs r3, #8 bl sub_0800293E str r0, [r4, #0x14] ldr r1, _08088650 @ =gLinkEntity ldrb r0, [r1, #0x14] cmp r0, #0 bne _0808863E movs r2, #0x36 ldrsh r0, [r1, r2] cmp r0, #0 beq _08088642 _0808863E: movs r0, #0 str r0, [r4, #0x14] _08088642: ldr r2, _08088654 @ =gUnk_02033280 ldrb r1, [r2, #7] movs r0, #1 orrs r0, r1 strb r0, [r2, #7] pop {r4, pc} .align 2, 0 _08088650: .4byte gLinkEntity _08088654: .4byte gUnk_02033280 thumb_func_start sub_08088658 sub_08088658: @ 0x08088658 push {r4, lr} adds r4, r1, #0 movs r0, #0x78 movs r1, #0x78 movs r2, #0x10 movs r3, #8 bl sub_0800293E str r0, [r4, #0x14] ldr r0, _08088684 @ =gLinkEntity movs r1, #0x36 ldrsh r0, [r0, r1] cmp r0, #0 beq _08088678 movs r0, #0 str r0, [r4, #0x14] _08088678: ldr r2, _08088688 @ =gUnk_02033280 ldrb r1, [r2, #7] movs r0, #1 orrs r0, r1 strb r0, [r2, #7] pop {r4, pc} .align 2, 0 _08088684: .4byte gLinkEntity _08088688: .4byte gUnk_02033280 thumb_func_start sub_0808868C sub_0808868C: @ 0x0808868C push {lr} ldr r2, _080886A0 @ =gUnk_08120B20 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080886A0: .4byte gUnk_08120B20 thumb_func_start sub_080886A4 sub_080886A4: @ 0x080886A4 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r1, [r4, #0xa] movs r6, #3 adds r0, r6, #0 ands r0, r1 strb r0, [r4, #0x14] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #4 movs r0, #0x48 strb r0, [r1] adds r0, r4, #0 adds r0, #0x3f movs r5, #1 strb r5, [r0] subs r1, #5 movs r0, #2 strb r0, [r1] ldr r0, _08088700 @ =gUnk_080FD168 str r0, [r4, #0x48] adds r0, r4, #0 adds r0, #0x84 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08088704 strb r6, [r4, #0xc] ldrb r1, [r4, #0x14] adds r1, #4 adds r0, r4, #0 bl UpdateSprite b _08088716 .align 2, 0 _08088700: .4byte gUnk_080FD168 _08088704: strb r5, [r4, #0xc] ldrb r0, [r4, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite _08088716: pop {r4, r5, r6, pc} thumb_func_start sub_08088718 sub_08088718: @ 0x08088718 push {r4, lr} adds r4, r0, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x95 beq _08088728 cmp r0, #0x8e bne _0808875A _08088728: ldr r0, [r4, #0x4c] ldrb r1, [r0, #0x15] adds r1, #4 movs r0, #0x18 ands r1, r0 asrs r1, r1, #3 ldrb r2, [r4, #0x14] movs r0, #3 ands r0, r2 cmp r1, r0 bne _0808875A movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldr r0, _0808875C @ =0x00000111 bl sub_08004488 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 _0808875A: pop {r4, pc} .align 2, 0 _0808875C: .4byte 0x00000111 thumb_func_start sub_08088760 sub_08088760: @ 0x08088760 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808878E movs r0, #3 strb r0, [r4, #0xc] ldrb r0, [r4, #0xe] lsls r0, r0, #1 adds r1, r4, #0 adds r1, #0x70 strh r0, [r1] ldrb r1, [r4, #0x14] adds r1, #4 adds r0, r4, #0 bl UpdateSprite _0808878E: pop {r4, pc} thumb_func_start sub_08088790 sub_08088790: @ 0x08088790 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] cmp r0, #0 beq _080887D6 adds r0, r4, #0 adds r0, #0x86 adds r2, r4, #0 adds r2, #0x84 ldrh r1, [r0] adds r5, r0, #0 ldrh r0, [r2] cmp r1, r0 beq _080887BC ldrh r0, [r2] bl sub_0807CBE4 cmp r0, #0 beq _080887BC movs r0, #0 strb r0, [r4, #0xe] b _080887D6 _080887BC: adds r1, r4, #0 adds r1, #0x70 ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _080887D6 movs r0, #4 strb r0, [r4, #0xc] ldrh r0, [r5] bl sub_0807CD48 _080887D6: pop {r4, r5, pc} thumb_func_start sub_080887D8 sub_080887D8: @ 0x080887D8 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08088802 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite _08088802: pop {r4, pc} thumb_func_start sub_08088804 sub_08088804: @ 0x08088804 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xf] cmp r0, #0 beq _08088828 subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _08088828 ldrb r0, [r4, #0x14] adds r1, r4, #0 adds r1, #0x72 strb r0, [r1] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite _08088828: ldr r0, _0808883C @ =gUnk_08120BE0 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 pop {r4, pc} .align 2, 0 _0808883C: .4byte gUnk_08120BE0 thumb_func_start sub_08088840 sub_08088840: @ 0x08088840 movs r3, #1 movs r1, #1 strb r1, [r0, #0xc] ldrb r2, [r0, #0x18] subs r1, #5 ands r1, r2 orrs r1, r3 strb r1, [r0, #0x18] adds r3, r0, #0 adds r3, #0x29 ldrb r1, [r3] movs r2, #7 orrs r1, r2 strb r1, [r3] ldr r1, _08088868 @ =gUnk_080FD1D4 str r1, [r0, #0x48] ldrb r1, [r0, #0x14] adds r0, #0x72 strb r1, [r0] bx lr .align 2, 0 _08088868: .4byte gUnk_080FD1D4 thumb_func_start sub_0808886C sub_0808886C: @ 0x0808886C push {r4, r5, lr} adds r5, r0, #0 bl sub_08088938 adds r4, r0, #0 adds r0, r5, #0 bl sub_080889A8 adds r4, r4, r0 lsls r4, r4, #0x18 lsrs r4, r4, #0x18 ldrb r1, [r5, #0xa] adds r0, r1, #2 cmp r0, r4 bgt _080888B8 movs r1, #0 movs r0, #2 strb r0, [r5, #0xc] strb r1, [r5, #0xf] movs r0, #4 strb r0, [r5, #0x14] strh r1, [r5, #0x36] adds r0, r5, #0 movs r1, #4 bl UpdateSprite adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 ldr r0, _080888B4 @ =0x0000016B bl sub_08004488 b _080888F2 .align 2, 0 _080888B4: .4byte 0x0000016B _080888B8: ldrb r0, [r5, #0x14] cmp r4, r0 bls _080888E4 adds r0, r1, #1 cmp r0, r4 bne _080888D2 movs r0, #4 strb r0, [r5, #0xf] adds r1, r4, #1 adds r0, r5, #0 bl UpdateSprite b _080888DA _080888D2: adds r0, r5, #0 adds r1, r4, #0 bl UpdateSprite _080888DA: movs r0, #0x86 lsls r0, r0, #1 bl sub_08004488 b _080888F0 _080888E4: cmp r4, r0 bhs _080888F0 adds r0, r5, #0 adds r1, r4, #0 bl UpdateSprite _080888F0: strb r4, [r5, #0x14] _080888F2: pop {r4, r5, pc} thumb_func_start sub_080888F4 sub_080888F4: @ 0x080888F4 push {r4, r5, lr} adds r5, r0, #0 adds r0, #0x70 ldrh r0, [r0] cmp r0, #0 beq _08088934 adds r0, r5, #0 bl sub_08088938 adds r4, r0, #0 adds r0, r5, #0 bl sub_080889A8 adds r4, r4, r0 lsls r4, r4, #0x18 lsrs r4, r4, #0x18 ldrb r0, [r5, #0xa] adds r0, #2 cmp r0, r4 ble _08088934 movs r0, #1 strb r0, [r5, #0xc] strb r4, [r5, #0x14] adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CD48 adds r0, r5, #0 adds r1, r4, #0 bl UpdateSprite _08088934: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08088938 sub_08088938: @ 0x08088938 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} movs r5, #0 ldrh r1, [r0, #0x2e] subs r1, #8 lsls r1, r1, #0x10 lsrs r1, r1, #0x10 mov ip, r1 ldrh r1, [r0, #0x32] subs r1, #8 lsls r1, r1, #0x10 lsrs r7, r1, #0x10 movs r4, #0 ldr r1, _080889A0 @ =gUnk_02034350 ldr r2, _080889A4 @ =gUnk_08120BEC mov r8, r2 adds r3, r1, #0 adds r3, #0xac adds r6, r0, #0 adds r6, #0x72 _08088962: ldr r2, [r3] cmp r2, #0 beq _08088990 ldrh r0, [r2, #0x2e] mov r1, ip subs r0, r0, r1 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0x10 bhi _08088990 ldrh r0, [r2, #0x32] subs r0, r0, r7 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0x10 bhi _08088990 ldrb r0, [r6] add r0, r8 ldrb r1, [r0] adds r0, r2, #0 adds r0, #0x63 strb r1, [r0] adds r5, #1 _08088990: adds r3, #4 adds r4, #1 cmp r4, #7 bls _08088962 adds r0, r5, #0 pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _080889A0: .4byte gUnk_02034350 _080889A4: .4byte gUnk_08120BEC thumb_func_start sub_080889A8 sub_080889A8: @ 0x080889A8 push {r4, r5, r6, lr} adds r4, r0, #0 movs r5, #0 bl sub_08017850 cmp r0, #0 beq _080889CA ldr r1, _08088A40 @ =gLinkEntity ldr r2, _08088A44 @ =gUnk_08120BEC adds r0, r4, #0 adds r0, #0x72 ldrb r0, [r0] adds r0, r0, r2 ldrb r0, [r0] adds r1, #0x63 strb r0, [r1] movs r5, #1 _080889CA: ldr r0, _08088A48 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 lsls r1, r1, #0xf ands r0, r1 cmp r0, #0 beq _08088A3A ldr r6, _08088A4C @ =gUnk_03004040 ldr r1, [r6] adds r0, r4, #0 bl sub_080177A0 cmp r0, #0 beq _080889FA ldr r1, [r6] ldr r2, _08088A44 @ =gUnk_08120BEC adds r0, r4, #0 adds r0, #0x72 ldrb r0, [r0] adds r0, r0, r2 ldrb r0, [r0] adds r1, #0x63 strb r0, [r1] adds r5, #1 _080889FA: ldr r1, [r6, #4] adds r0, r4, #0 bl sub_080177A0 cmp r0, #0 beq _08088A1A ldr r1, [r6, #4] ldr r2, _08088A44 @ =gUnk_08120BEC adds r0, r4, #0 adds r0, #0x72 ldrb r0, [r0] adds r0, r0, r2 ldrb r0, [r0] adds r1, #0x63 strb r0, [r1] adds r5, #1 _08088A1A: ldr r1, [r6, #8] adds r0, r4, #0 bl sub_080177A0 cmp r0, #0 beq _08088A3A ldr r1, [r6, #8] ldr r2, _08088A44 @ =gUnk_08120BEC adds r0, r4, #0 adds r0, #0x72 ldrb r0, [r0] adds r0, r0, r2 ldrb r0, [r0] adds r1, #0x63 strb r0, [r1] adds r5, #1 _08088A3A: adds r0, r5, #0 pop {r4, r5, r6, pc} .align 2, 0 _08088A40: .4byte gLinkEntity _08088A44: .4byte gUnk_08120BEC _08088A48: .4byte gLinkState _08088A4C: .4byte gUnk_03004040 thumb_func_start sub_08088A50 sub_08088A50: @ 0x08088A50 push {lr} ldr r2, _08088A64 @ =gUnk_08120C34 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08088A64: .4byte gUnk_08120C34 thumb_func_start sub_08088A68 sub_08088A68: @ 0x08088A68 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08088AE4 movs r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4, #0x18] movs r2, #3 orrs r0, r2 strb r0, [r4, #0x18] ldrb r1, [r4, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x11] movs r0, #0x17 bl GetProgressFlag cmp r0, #0 beq _08088AA0 ldr r0, _08088A9C @ =gUnk_02002A40 ldrb r0, [r0, #7] adds r0, #1 b _08088AA4 .align 2, 0 _08088A9C: .4byte gUnk_02002A40 _08088AA0: ldr r0, _08088AD8 @ =gUnk_02002A40 ldrb r0, [r0, #7] _08088AA4: strb r0, [r4, #0x1e] adds r0, r4, #0 bl sub_08088BE0 movs r1, #0x2e ldrsh r0, [r4, r1] ldr r2, _08088ADC @ =gRoomControls ldrh r1, [r2, #6] subs r0, r0, r1 movs r3, #0x32 ldrsh r1, [r4, r3] ldrh r2, [r2, #8] subs r1, r1, r2 movs r2, #0x80 movs r3, #0x60 bl sub_0800293E cmp r0, #0 beq _08088B82 ldr r0, _08088AE0 @ =gUnk_02034350 ldr r1, [r0, #0x68] movs r2, #4 orrs r1, r2 str r1, [r0, #0x68] b _08088B82 .align 2, 0 _08088AD8: .4byte gUnk_02002A40 _08088ADC: .4byte gRoomControls _08088AE0: .4byte gUnk_02034350 _08088AE4: ldr r5, _08088B70 @ =gUnk_02034350 ldr r1, [r5, #0x68] movs r6, #1 adds r0, r1, #0 ands r0, r6 cmp r0, #0 beq _08088B06 movs r0, #2 rsbs r0, r0, #0 ands r1, r0 str r1, [r5, #0x68] strb r6, [r4, #0xe] ldr r0, _08088B74 @ =gUnk_08120C1C str r0, [r4, #0x68] movs r0, #0x8a bl PlaySFX _08088B06: ldr r1, [r5, #0x68] movs r0, #2 ands r0, r1 cmp r0, #0 beq _08088B24 movs r0, #3 rsbs r0, r0, #0 ands r1, r0 str r1, [r5, #0x68] strb r6, [r4, #0xe] ldr r0, _08088B78 @ =gUnk_08120C25 str r0, [r4, #0x68] movs r0, #0x89 bl PlaySFX _08088B24: ldr r1, [r5, #0x68] movs r0, #4 ands r0, r1 cmp r0, #0 beq _08088B42 movs r0, #5 rsbs r0, r0, #0 ands r1, r0 str r1, [r5, #0x68] strb r6, [r4, #0xe] ldr r0, _08088B7C @ =gUnk_08120C2E str r0, [r4, #0x68] movs r0, #0x8a bl PlaySFX _08088B42: ldrb r0, [r4, #0xe] cmp r0, #0 beq _08088B82 subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r3, r0, #0x18 cmp r3, #0 bne _08088B82 ldr r1, [r4, #0x68] ldrb r0, [r1] adds r2, r4, #0 adds r2, #0x63 strb r0, [r2] adds r1, #1 ldrb r0, [r1] cmp r0, #0xff beq _08088B80 movs r0, #8 strb r0, [r4, #0xe] str r1, [r4, #0x68] b _08088B82 .align 2, 0 _08088B70: .4byte gUnk_02034350 _08088B74: .4byte gUnk_08120C1C _08088B78: .4byte gUnk_08120C25 _08088B7C: .4byte gUnk_08120C2E _08088B80: strb r3, [r2] _08088B82: adds r5, r4, #0 adds r5, #0x29 ldrb r1, [r5] movs r6, #8 rsbs r6, r6, #0 adds r0, r6, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5] movs r1, #0x2e ldrsh r0, [r4, r1] subs r0, #0x50 movs r2, #0x32 ldrsh r1, [r4, r2] subs r1, #0x50 movs r2, #0xa0 movs r3, #0x30 bl sub_0806FBFC cmp r0, #0 beq _08088BBA ldrb r0, [r5] adds r1, r6, #0 ands r1, r0 movs r0, #5 orrs r1, r0 strb r1, [r5] _08088BBA: movs r3, #0x2e ldrsh r0, [r4, r3] subs r0, #0x50 movs r2, #0x32 ldrsh r1, [r4, r2] adds r1, #0x30 movs r2, #0xa0 movs r3, #0x30 bl sub_0806FBFC cmp r0, #0 beq _08088BDE ldrb r0, [r5] adds r1, r6, #0 ands r1, r0 movs r0, #5 orrs r1, r0 strb r1, [r5] _08088BDE: pop {r4, r5, r6, pc} thumb_func_start sub_08088BE0 sub_08088BE0: @ 0x08088BE0 push {r4, lr} adds r4, r0, #0 movs r0, #0x15 bl sub_0807CBD0 cmp r0, #0 bne _08088C1C movs r3, #0x78 rsbs r3, r3, #0 adds r0, r4, #0 movs r1, #2 movs r2, #0 bl sub_08088C78 adds r0, r4, #0 movs r1, #4 movs r2, #0x15 movs r3, #0 bl sub_08088C78 adds r2, r0, #0 cmp r2, #0 beq _08088C1C ldr r0, _08088C74 @ =gRoomControls ldrh r1, [r0, #6] adds r1, #0x48 strh r1, [r2, #0x2e] ldrh r0, [r0, #8] adds r0, #0xc8 strh r0, [r2, #0x32] _08088C1C: movs r0, #0x16 bl sub_0807CBD0 cmp r0, #0 bne _08088C58 adds r0, r4, #0 movs r1, #2 movs r2, #1 movs r3, #0x78 bl sub_08088C78 adds r0, r4, #0 movs r1, #4 movs r2, #0x16 movs r3, #0 bl sub_08088C78 adds r2, r0, #0 cmp r2, #0 beq _08088C58 ldr r0, _08088C74 @ =gRoomControls movs r3, #0xc4 lsls r3, r3, #1 adds r1, r3, #0 ldrh r3, [r0, #6] adds r1, r1, r3 strh r1, [r2, #0x2e] ldrh r0, [r0, #8] adds r0, #0xc8 strh r0, [r2, #0x32] _08088C58: movs r3, #0x78 rsbs r3, r3, #0 adds r0, r4, #0 movs r1, #1 movs r2, #0 bl sub_08088C78 adds r0, r4, #0 movs r1, #1 movs r2, #1 movs r3, #0x78 bl sub_08088C78 pop {r4, pc} .align 2, 0 _08088C74: .4byte gRoomControls thumb_func_start sub_08088C78 sub_08088C78: @ 0x08088C78 push {r4, r5, lr} adds r4, r0, #0 adds r5, r3, #0 movs r0, #0x25 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _08088C96 ldrh r0, [r4, #0x2e] adds r0, r0, r5 strh r0, [r1, #0x2e] ldrh r0, [r4, #0x32] strh r0, [r1, #0x32] str r4, [r1, #0x50] _08088C96: adds r0, r1, #0 pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08088C9C sub_08088C9C: @ 0x08088C9C push {r4, lr} adds r4, r0, #0 ldr r1, _08088CEC @ =gUnk_08120C48 ldr r0, [r4, #0x50] adds r0, #0x29 ldrb r0, [r0] lsls r0, r0, #0x1d lsrs r0, r0, #0x1d adds r0, r0, r1 ldrb r0, [r0] adds r3, r4, #0 adds r3, #0x29 movs r1, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] ldr r0, [r4, #0x50] adds r0, #0x63 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 lsrs r1, r0, #0x1f adds r0, r0, r1 asrs r0, r0, #1 adds r1, r4, #0 adds r1, #0x63 strb r0, [r1] ldrb r0, [r4, #0xc] cmp r0, #1 beq _08088D4C cmp r0, #1 bgt _08088CF0 cmp r0, #0 beq _08088CFA b _08088DB0 .align 2, 0 _08088CEC: .4byte gUnk_08120C48 _08088CF0: cmp r0, #2 beq _08088D5A cmp r0, #3 beq _08088D7A b _08088DB0 _08088CFA: movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r2, [r4, #0xb] adds r0, r2, #4 strb r0, [r4, #0x1e] ldrb r1, [r4, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] lsls r2, r2, #0x18 movs r0, #0x16 cmp r2, #0 bne _08088D28 movs r0, #0x15 _08088D28: strb r0, [r4, #0xf] ldrb r0, [r4, #0xf] bl sub_0807CBD0 cmp r0, #0 beq _08088DB0 ldr r1, _08088D48 @ =gUnk_08120C50 ldrb r0, [r4, #0xb] adds r0, r0, r1 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r4, #0x2e] adds r0, r0, r1 strh r0, [r4, #0x2e] b _08088DAC .align 2, 0 _08088D48: .4byte gUnk_08120C50 _08088D4C: ldrb r0, [r4, #0xf] bl sub_0807CBD0 cmp r0, #0 beq _08088DB0 movs r0, #2 b _08088DAE _08088D5A: ldr r2, _08088D98 @ =gUnk_02034350 ldr r1, [r2, #0x68] movs r0, #0x20 ands r0, r1 cmp r0, #0 beq _08088DB0 movs r0, #0x21 rsbs r0, r0, #0 ands r1, r0 str r1, [r2, #0x68] movs r0, #3 strb r0, [r4, #0xc] movs r0, #4 strb r0, [r4, #0xd] movs r0, #1 strb r0, [r4, #0xe] _08088D7A: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08088DB0 movs r0, #8 strb r0, [r4, #0xe] movs r0, #0x2e ldrsh r1, [r4, r0] ldrb r0, [r4, #0xb] cmp r0, #0 beq _08088D9C subs r0, r1, #2 b _08088D9E .align 2, 0 _08088D98: .4byte gUnk_02034350 _08088D9C: adds r0, r1, #2 _08088D9E: strh r0, [r4, #0x2e] ldrb r0, [r4, #0xd] subs r0, #1 strb r0, [r4, #0xd] lsls r0, r0, #0x18 cmp r0, #0 bne _08088DB0 _08088DAC: movs r0, #4 _08088DAE: strb r0, [r4, #0xc] _08088DB0: pop {r4, pc} .align 2, 0 thumb_func_start sub_08088DB4 sub_08088DB4: @ 0x08088DB4 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #1 beq _08088E28 cmp r0, #1 bgt _08088DC8 cmp r0, #0 beq _08088DEC b _08088E50 _08088DC8: cmp r0, #4 bgt _08088E50 ldr r0, _08088DE8 @ =gUnk_02034350 ldr r0, [r0, #0x68] movs r1, #8 ands r0, r1 cmp r0, #0 beq _08088E6E ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08088E6E b _08088E3E .align 2, 0 _08088DE8: .4byte gUnk_02034350 _08088DEC: movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r0, [r4, #0xb] lsls r0, r0, #2 adds r0, #6 strb r0, [r4, #0x1e] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r4, #0 movs r1, #3 bl sub_0805E3A0 ldrb r0, [r4, #0xb] movs r1, #0x16 cmp r0, #0 bne _08088E1E movs r1, #0x15 _08088E1E: strb r1, [r4, #0xb] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip b _08088E6E _08088E28: ldrb r0, [r4, #0xb] bl sub_0807CBD0 cmp r0, #0 beq _08088E6E ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0xa strb r0, [r4, #0xe] b _08088E6E _08088E3E: movs r0, #0x1e strb r0, [r4, #0xe] ldrb r0, [r4, #0x1e] adds r0, #1 strb r0, [r4, #0x1e] ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] b _08088E6E _08088E50: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08088E6E ldr r0, _08088E70 @ =gUnk_02034350 ldr r1, [r0, #0x68] movs r2, #9 rsbs r2, r2, #0 ands r1, r2 str r1, [r0, #0x68] adds r0, r4, #0 bl sub_0805E7BC _08088E6E: pop {r4, pc} .align 2, 0 _08088E70: .4byte gUnk_02034350 thumb_func_start sub_08088E74 sub_08088E74: @ 0x08088E74 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08088E94 movs r0, #1 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] ldr r2, _08088EB0 @ =gUnk_02034350 ldr r0, [r2, #0x68] movs r1, #8 orrs r0, r1 str r0, [r2, #0x68] _08088E94: adds r0, r4, #0 bl sub_0806FB38 cmp r0, #0 beq _08088EB4 ldr r0, _08088EB0 @ =gUnk_02034350 ldr r1, [r0, #0x68] movs r2, #0x10 orrs r1, r2 str r1, [r0, #0x68] adds r0, r4, #0 bl sub_0805E7BC b _08088F14 .align 2, 0 _08088EB0: .4byte gUnk_02034350 _08088EB4: ldr r0, _08088F18 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #7 ands r0, r1 cmp r0, #0 bne _08088F14 adds r0, r4, #0 movs r1, #0x2a movs r2, #0 movs r3, #0x1e bl CreateObjectWithParent adds r4, r0, #0 cmp r4, #0 beq _08088F14 ldrb r1, [r4, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] ldrb r2, [r4, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 strb r0, [r4, #0x19] adds r3, r4, #0 adds r3, #0x29 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 strb r0, [r3] ldrb r0, [r4, #0x1b] ands r1, r0 strb r1, [r4, #0x1b] bl Random ldr r2, _08088F1C @ =gUnk_08120C52 movs r1, #3 ands r1, r0 adds r1, r1, r2 movs r0, #0 ldrsb r0, [r1, r0] ldrh r1, [r4, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] _08088F14: pop {r4, pc} .align 2, 0 _08088F18: .4byte gUnk_030010A0 _08088F1C: .4byte gUnk_08120C52 thumb_func_start sub_08088F20 sub_08088F20: @ 0x08088F20 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #1 beq _08088F62 cmp r0, #1 bgt _08088F34 cmp r0, #0 beq _08088F3E b _08089020 _08088F34: cmp r0, #2 beq _08088FEC cmp r0, #3 beq _08089004 b _08089020 _08088F3E: movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x11] subs r0, #0x11 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] ldrb r0, [r4, #0xb] bl sub_0807CBD0 cmp r0, #0 bne _08088F5A b _0808908E _08088F5A: adds r0, r4, #0 bl sub_0805E7BC b _0808908E _08088F62: ldrb r0, [r4, #0xb] bl sub_0807CBD0 cmp r0, #0 bne _08088F6E b _0808908E _08088F6E: movs r5, #2 strb r5, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xe] movs r1, #0x87 lsls r1, r1, #1 adds r0, r4, #0 bl sub_0805E4E0 movs r0, #0x2a movs r1, #1 movs r2, #0 bl CreateObject adds r2, r0, #0 cmp r2, #0 beq _08088FBC ldrb r1, [r2, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2, #0x11] ldrh r0, [r4, #0x2e] strh r0, [r2, #0x2e] ldrh r0, [r4, #0x32] strh r0, [r2, #0x32] adds r0, r2, #0 adds r0, #0x38 strb r5, [r0] adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #2 orrs r0, r1 strb r0, [r2] _08088FBC: movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08088FE8 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r5, #0x32 ldrsh r0, [r4, r5] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 movs r0, #0x76 movs r2, #2 bl sub_0807B314 b _0808908E .align 2, 0 _08088FE8: .4byte gRoomControls _08088FEC: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808908E adds r0, r4, #0 bl sub_08089094 movs r0, #3 strb r0, [r4, #0xc] b _0808908E _08089004: ldr r0, _0808901C @ =gUnk_02034350 ldr r0, [r0, #0x68] movs r1, #0x10 ands r0, r1 cmp r0, #0 beq _0808908E movs r0, #4 strb r0, [r4, #0xc] movs r0, #0x78 strb r0, [r4, #0xe] b _0808908E .align 2, 0 _0808901C: .4byte gUnk_02034350 _08089020: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x5a bne _0808905C movs r0, #0x15 movs r1, #2 bl sub_0807CC60 cmp r0, #0 beq _08089048 ldr r0, _08089044 @ =gUnk_02034350 ldr r1, [r0, #0x68] movs r2, #2 b _0808904E .align 2, 0 _08089044: .4byte gUnk_02034350 _08089048: ldr r0, _08089090 @ =gUnk_02034350 ldr r1, [r0, #0x68] movs r2, #1 _0808904E: orrs r1, r2 str r1, [r0, #0x68] adds r2, r0, #0 ldr r0, [r2, #0x68] movs r1, #0x20 orrs r0, r1 str r0, [r2, #0x68] _0808905C: ldrb r0, [r4, #0xe] cmp r0, #0 bne _0808908E ldr r2, _08089090 @ =gUnk_02034350 ldr r0, [r2, #0x68] movs r1, #0x11 rsbs r1, r1, #0 ands r0, r1 str r0, [r2, #0x68] movs r0, #0x15 movs r1, #2 bl sub_0807CC60 cmp r0, #0 beq _08089088 adds r0, r4, #0 movs r1, #0x3c bl sub_0805E4E0 movs r0, #0x72 bl PlaySFX _08089088: adds r0, r4, #0 bl sub_0805E7BC _0808908E: pop {r4, r5, pc} .align 2, 0 _08089090: .4byte gUnk_02034350 thumb_func_start sub_08089094 sub_08089094: @ 0x08089094 push {r4, r5, lr} adds r5, r0, #0 movs r1, #0x2e ldrsh r0, [r5, r1] ldr r1, _080890C4 @ =gRoomControls ldrh r1, [r1, #6] subs r0, r0, r1 cmp r0, #0xff bgt _080890CC ldr r4, _080890C8 @ =gUnk_08120C56 movs r2, #8 rsbs r2, r2, #0 adds r0, r5, #0 adds r1, r4, #0 bl sub_080890EC adds r4, #4 adds r0, r5, #0 adds r1, r4, #0 movs r2, #4 bl sub_080890EC b _080890E6 .align 2, 0 _080890C4: .4byte gRoomControls _080890C8: .4byte gUnk_08120C56 _080890CC: ldr r4, _080890E8 @ =gUnk_08120C5E movs r2, #8 rsbs r2, r2, #0 adds r0, r5, #0 adds r1, r4, #0 bl sub_080890EC adds r4, #4 adds r0, r5, #0 adds r1, r4, #0 movs r2, #4 bl sub_080890EC _080890E6: pop {r4, r5, pc} .align 2, 0 _080890E8: .4byte gUnk_08120C5E thumb_func_start sub_080890EC sub_080890EC: @ 0x080890EC push {r4, r5, r6, r7, lr} adds r5, r0, #0 adds r7, r1, #0 adds r6, r2, #0 movs r0, #0x25 movs r1, #3 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08089132 movs r1, #3 bl sub_0805E3A0 ldrh r0, [r5, #0x2e] strh r0, [r4, #0x2e] ldrh r0, [r5, #0x32] adds r0, r0, r6 strh r0, [r4, #0x32] str r5, [r4, #0x50] movs r0, #0x2e ldrsh r1, [r4, r0] movs r2, #0 ldrsh r0, [r7, r2] adds r1, r1, r0 movs r3, #0x32 ldrsh r2, [r4, r3] movs r3, #2 ldrsh r0, [r7, r3] adds r2, r2, r0 adds r0, r4, #0 movs r3, #0x5a bl sub_0806FB00 _08089132: pop {r4, r5, r6, r7, pc} thumb_func_start sub_08089134 sub_08089134: @ 0x08089134 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xc] cmp r0, #0 bne _0808919C movs r2, #1 movs r3, #1 strb r3, [r5, #0xc] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r5, #0x18] ldrb r0, [r5, #0xa] strb r0, [r5, #0x1e] movs r0, #0x10 strb r0, [r5, #0xe] strb r3, [r5, #0xf] ldrb r0, [r5, #0xa] lsls r3, r0, #1 adds r3, r3, r0 ldr r0, _080891D4 @ =gUnk_08120C80 adds r3, r3, r0 ldrb r1, [r3] lsls r1, r1, #6 ldrb r4, [r5, #0x19] movs r2, #0x3f adds r0, r2, #0 ands r0, r4 orrs r0, r1 strb r0, [r5, #0x19] ldrb r0, [r3, #1] movs r1, #0x29 adds r1, r1, r5 mov ip, r1 movs r1, #7 ands r1, r0 mov r0, ip ldrb r4, [r0] movs r0, #8 rsbs r0, r0, #0 ands r0, r4 orrs r0, r1 mov r1, ip strb r0, [r1] ldrb r0, [r3, #2] lsls r0, r0, #6 ldrb r1, [r5, #0x1b] ands r2, r1 orrs r2, r0 strb r2, [r5, #0x1b] _0808919C: ldrb r0, [r5, #0xa] cmp r0, #4 bne _080891D0 ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 lsrs r3, r0, #0x18 cmp r3, #0 bne _080891D0 movs r0, #0x10 strb r0, [r5, #0xe] ldr r2, _080891D8 @ =gUnk_08120C92 ldrb r0, [r5, #0xf] adds r1, r0, #1 strb r1, [r5, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 adds r0, r0, r2 ldrb r0, [r0] strb r0, [r5, #0x1e] lsls r1, r1, #0x18 lsrs r1, r1, #0x18 cmp r1, #3 bne _080891D0 strb r3, [r5, #0xf] _080891D0: pop {r4, r5, pc} .align 2, 0 _080891D4: .4byte gUnk_08120C80 _080891D8: .4byte gUnk_08120C92 thumb_func_start sub_080891DC sub_080891DC: @ 0x080891DC push {lr} ldr r2, _080891F0 @ =gUnk_08120C98 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080891F0: .4byte gUnk_08120C98 thumb_func_start sub_080891F4 sub_080891F4: @ 0x080891F4 push {r4, lr} adds r4, r0, #0 bl sub_0808965C cmp r0, #0 beq _08089236 movs r3, #0 movs r2, #1 strb r2, [r4, #0xc] movs r0, #0x80 strh r0, [r4, #0x24] ldrb r1, [r4, #0x11] subs r0, #0x90 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] ldr r0, _08089238 @ =gUnk_080FD1F4 str r0, [r4, #0x48] strb r2, [r4, #0x16] adds r0, r4, #0 adds r0, #0x86 strh r3, [r0] adds r0, r4, #0 bl sub_08089454 adds r0, r4, #0 bl sub_080894C8 adds r0, r4, #0 movs r1, #0 bl UpdateSprite _08089236: pop {r4, pc} .align 2, 0 _08089238: .4byte gUnk_080FD1F4 thumb_func_start sub_0808923C sub_0808923C: @ 0x0808923C push {r4, r5, lr} adds r4, r0, #0 bl sub_0800442E cmp r0, #0 bne _080892C0 adds r0, r4, #0 adds r0, #0x84 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002B0 lsls r0, r0, #0x10 lsrs r5, r0, #0x10 ldr r0, _08089278 @ =0x0000400B cmp r5, r0 beq _080892BA adds r0, r5, #0 bl sub_0808968C cmp r0, #1 beq _0808927C cmp r0, #1 blo _08089294 cmp r0, #2 beq _080892B2 b _080892C0 .align 2, 0 _08089278: .4byte 0x0000400B _0808927C: movs r1, #3 movs r0, #3 strb r0, [r4, #0xc] adds r0, r5, #0 subs r0, #0xc ands r0, r1 lsls r0, r0, #3 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_08089538 b _080892C0 _08089294: movs r0, #0xf movs r1, #4 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _080892AA adds r0, r4, #0 bl CopyPosition _080892AA: adds r0, r4, #0 bl sub_080894FC b _080892C0 _080892B2: adds r0, r4, #0 adds r0, #0x80 strh r5, [r0] b _080892C0 _080892BA: adds r0, r4, #0 bl sub_08078930 _080892C0: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080892C4 sub_080892C4: @ 0x080892C4 push {lr} adds r2, r0, #0 adds r0, #0x86 ldrh r0, [r0] cmp r0, #0 beq _080892D8 adds r0, r2, #0 bl sub_080895C0 b _080892F6 _080892D8: ldr r0, _080892F8 @ =gLinkState ldrb r0, [r0, #5] cmp r0, #0 bne _080892E4 movs r0, #6 strb r0, [r2, #0xd] _080892E4: ldr r0, _080892FC @ =gUnk_08120CAC ldrb r1, [r2, #0xd] subs r1, #5 lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 _080892F6: pop {pc} .align 2, 0 _080892F8: .4byte gLinkState _080892FC: .4byte gUnk_08120CAC thumb_func_start sub_08089300 sub_08089300: @ 0x08089300 push {r4, r5, lr} adds r5, r0, #0 adds r1, r5, #0 adds r1, #0x83 ldrb r0, [r1] cmp r0, #0 bne _0808932C movs r0, #1 strb r0, [r1] ldr r1, _0808935C @ =gLinkEntity ldrb r0, [r1, #0x14] ldr r2, _08089360 @ =gUnk_08120CB4 adds r0, r0, r2 movs r2, #0 ldrsb r2, [r0, r2] lsls r2, r2, #0x10 movs r3, #1 ldrsb r3, [r0, r3] lsls r3, r3, #0x10 adds r0, r5, #0 bl PositionRelative _0808932C: adds r0, r5, #0 adds r0, #0x84 ldrh r0, [r0] adds r1, r5, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002B0 lsls r0, r0, #0x10 lsrs r4, r0, #0x10 ldr r0, _08089364 @ =0x0000400B cmp r4, r0 beq _080893A0 adds r0, r4, #0 bl sub_0808968C cmp r0, #1 beq _08089368 cmp r0, #1 blo _0808937C cmp r0, #2 beq _0808939A b _080893A0 .align 2, 0 _0808935C: .4byte gLinkEntity _08089360: .4byte gUnk_08120CB4 _08089364: .4byte 0x0000400B _08089368: adds r0, r4, #0 subs r0, #0xc movs r1, #3 ands r0, r1 lsls r0, r0, #3 strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_08089538 b _080893A0 _0808937C: movs r0, #0xf movs r1, #4 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _08089392 adds r0, r5, #0 bl CopyPosition _08089392: adds r0, r5, #0 bl sub_080894FC b _080893D6 _0808939A: adds r0, r5, #0 adds r0, #0x80 strh r4, [r0] _080893A0: bl sub_080896B0 cmp r0, #0 beq _080893D6 ldr r2, _080893D8 @ =gLinkState movs r3, #0 movs r0, #0x10 strb r0, [r2, #0xc] adds r1, r2, #0 adds r1, #0x38 movs r0, #0x20 strb r0, [r1] ldr r0, [r2, #0x30] movs r1, #1 orrs r0, r1 str r0, [r2, #0x30] ldr r0, _080893DC @ =gLinkEntity strh r3, [r0, #0x2c] strh r3, [r0, #0x30] ldrb r0, [r0, #0x14] movs r1, #4 eors r0, r1 lsls r0, r0, #2 strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_08089538 _080893D6: pop {r4, r5, pc} .align 2, 0 _080893D8: .4byte gLinkState _080893DC: .4byte gLinkEntity thumb_func_start sub_080893E0 sub_080893E0: @ 0x080893E0 movs r2, #0 movs r1, #1 strb r1, [r0, #0xc] adds r0, #0x83 strb r2, [r0] bx lr thumb_func_start sub_080893EC sub_080893EC: @ 0x080893EC push {r4, lr} adds r4, r0, #0 bl sub_080895C0 cmp r0, #0 beq _080893FC movs r0, #1 strb r0, [r4, #0xc] _080893FC: pop {r4, pc} .align 2, 0 thumb_func_start sub_08089400 sub_08089400: @ 0x08089400 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 beq _08089424 ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] b _0808944E _08089424: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #1 strb r0, [r4, #0xc] ldr r0, _08089450 @ =0x0000400B adds r1, r4, #0 adds r1, #0x84 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer adds r0, r4, #0 bl sub_080894C8 _0808944E: pop {r4, pc} .align 2, 0 _08089450: .4byte 0x0000400B thumb_func_start sub_08089454 sub_08089454: @ 0x08089454 push {r4, r5, r6, lr} adds r5, r0, #0 movs r0, #0x2e ldrsh r1, [r5, r0] ldr r2, _080894C0 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r4, #0x32 ldrsh r0, [r5, r4] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r6, r5, #0 adds r6, #0x84 strh r1, [r6] ldrh r0, [r6] adds r4, r5, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_080001DA adds r1, r5, #0 adds r1, #0x80 strh r0, [r1] ldr r5, _080894C4 @ =0x0000400B ldrh r1, [r6] ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldrb r0, [r4] cmp r0, #2 bne _080894BC ldrh r0, [r6] movs r1, #1 bl sub_080002B0 movs r1, #0xc4 lsls r1, r1, #2 cmp r0, r1 bne _080894BC ldrh r1, [r6] adds r0, r5, #0 movs r2, #1 bl UpdateCollisionLayer _080894BC: pop {r4, r5, r6, pc} .align 2, 0 _080894C0: .4byte gRoomControls _080894C4: .4byte 0x0000400B thumb_func_start sub_080894C8 sub_080894C8: @ 0x080894C8 push {r4, lr} adds r3, r0, #0 movs r2, #0 ldr r1, _080894E0 @ =gUnk_02034350 adds r4, r1, #0 adds r4, #0xac ldr r0, [r4] mov ip, r1 cmp r0, #0 bne _080894E4 str r3, [r4] b _080894FA .align 2, 0 _080894E0: .4byte gUnk_02034350 _080894E4: adds r2, #1 cmp r2, #7 bhi _080894FA lsls r0, r2, #2 mov r1, ip adds r1, #0xac adds r1, r0, r1 ldr r0, [r1] cmp r0, #0 bne _080894E4 str r3, [r1] _080894FA: pop {r4, pc} thumb_func_start sub_080894FC sub_080894FC: @ 0x080894FC push {r4, lr} adds r3, r0, #0 movs r2, #0 ldr r1, _08089514 @ =gUnk_02034350 adds r4, r1, #0 adds r4, #0xac ldr r0, [r4] mov ip, r1 cmp r3, r0 bne _08089518 str r2, [r4] b _08089530 .align 2, 0 _08089514: .4byte gUnk_02034350 _08089518: adds r2, #1 cmp r2, #7 bhi _08089530 lsls r0, r2, #2 mov r1, ip adds r1, #0xac adds r1, r0, r1 ldr r0, [r1] cmp r3, r0 bne _08089518 movs r0, #0 str r0, [r1] _08089530: adds r0, r3, #0 bl sub_0805E7BC pop {r4, pc} thumb_func_start sub_08089538 sub_08089538: @ 0x08089538 push {r4, r5, r6, lr} adds r5, r0, #0 adds r1, r5, #0 adds r1, #0x86 movs r0, #0x20 strh r0, [r1] adds r0, #0xef bl sub_08004488 adds r0, r5, #0 adds r0, #0x80 ldrh r0, [r0] adds r6, r5, #0 adds r6, #0x84 ldrh r1, [r6] adds r4, r5, #0 adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer ldrb r0, [r4] cmp r0, #2 bne _08089580 ldrh r0, [r6] movs r1, #1 bl sub_080002B0 ldr r1, _080895B8 @ =0x0000400B cmp r0, r1 bne _08089580 movs r0, #0xc4 lsls r0, r0, #2 ldrh r1, [r6] movs r2, #1 bl sub_08000152 _08089580: adds r2, r5, #0 adds r2, #0x84 ldr r1, _080895BC @ =gUnk_080B4488 ldrb r0, [r5, #0x15] lsrs r0, r0, #3 lsls r0, r0, #1 adds r0, r0, r1 movs r1, #0 ldrsh r0, [r0, r1] ldrh r2, [r2] adds r0, r0, r2 adds r1, r5, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002B0 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0x79 beq _080895AC cmp r0, #0x77 bne _080895B4 _080895AC: adds r1, r5, #0 adds r1, #0x63 movs r0, #0xfe strb r0, [r1] _080895B4: pop {r4, r5, r6, pc} .align 2, 0 _080895B8: .4byte 0x0000400B _080895BC: .4byte gUnk_080B4488 thumb_func_start sub_080895C0 sub_080895C0: @ 0x080895C0 push {r4, lr} adds r4, r0, #0 bl sub_0806F69C adds r1, r4, #0 adds r1, #0x86 ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _0808964C adds r0, r4, #0 bl sub_0800442E cmp r0, #0 bne _0808964C adds r1, r4, #0 adds r1, #0x63 movs r0, #0 strb r0, [r1] adds r0, r4, #0 bl sub_080002D0 cmp r0, #0 bne _080895FE adds r0, r4, #0 bl sub_08089454 movs r0, #1 b _08089654 _080895FE: movs r0, #0xf movs r1, #4 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _08089614 adds r0, r4, #0 bl CopyPosition _08089614: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] ldr r2, _08089658 @ =gUnk_08120CBC ldrb r1, [r4, #0x15] lsrs r1, r1, #2 lsls r0, r1, #1 adds r0, r0, r2 ldrh r0, [r0] ldrh r3, [r4, #0x2e] adds r0, r0, r3 strh r0, [r4, #0x2e] adds r1, #1 lsls r1, r1, #1 adds r1, r1, r2 ldrh r0, [r1] ldrh r1, [r4, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] adds r0, r4, #0 bl sub_08089454 movs r0, #4 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] _0808964C: adds r0, r4, #0 bl sub_0800445C movs r0, #0 _08089654: pop {r4, pc} .align 2, 0 _08089658: .4byte gUnk_08120CBC thumb_func_start sub_0808965C sub_0808965C: @ 0x0808965C push {lr} adds r2, r0, #0 ldr r3, _08089678 @ =gRoomControls ldrb r0, [r3, #4] cmp r0, #0x3f bls _08089680 ldr r1, _0808967C @ =gUnk_08120CCC subs r0, #0x40 lsls r0, r0, #1 adds r0, r0, r1 ldrh r1, [r0] adds r0, r2, #0 b _08089684 .align 2, 0 _08089678: .4byte gRoomControls _0808967C: .4byte gUnk_08120CCC _08089680: adds r0, r2, #0 movs r1, #0xe9 _08089684: bl sub_080ADF80 pop {pc} .align 2, 0 thumb_func_start sub_0808968C sub_0808968C: @ 0x0808968C push {lr} adds r2, r0, #0 ldr r1, _08089694 @ =gUnk_08120D6C b _080896A4 .align 2, 0 _08089694: .4byte gUnk_08120D6C _08089698: ldrh r0, [r1] cmp r0, r2 bne _080896A2 ldrh r0, [r1, #2] b _080896AC _080896A2: adds r1, #4 _080896A4: ldrh r0, [r1] cmp r0, #0 bne _08089698 movs r0, #0 _080896AC: pop {pc} .align 2, 0 thumb_func_start sub_080896B0 sub_080896B0: @ 0x080896B0 push {r4, r5, r6, r7, lr} ldr r0, _08089750 @ =gLinkState ldrb r1, [r0, #5] movs r0, #0x1f ands r0, r1 cmp r0, #0x12 bne _08089768 ldr r6, _08089754 @ =gLinkEntity adds r0, r6, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08089768 ldrb r3, [r6, #0x14] movs r2, #6 ands r2, r3 lsls r2, r2, #1 ldr r0, _08089758 @ =gUnk_080B4468 adds r2, r2, r0 ldr r0, _0808975C @ =gUnk_080B4488 lsrs r3, r3, #1 lsls r3, r3, #1 adds r3, r3, r0 movs r0, #0x2e ldrsh r1, [r6, r0] movs r4, #0 ldrsh r0, [r2, r4] adds r1, r1, r0 ldr r5, _08089760 @ =gRoomControls ldrh r0, [r5, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r7, #0x32 ldrsh r0, [r6, r7] movs r7, #2 ldrsh r2, [r2, r7] adds r0, r0, r2 ldrh r2, [r5, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r4 lsls r0, r0, #6 orrs r1, r0 movs r0, #0 ldrsh r7, [r3, r0] subs r1, r1, r7 lsls r4, r1, #0x10 lsrs r0, r4, #0x10 adds r5, r6, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080002C8 adds r1, r0, #0 subs r0, #0x26 cmp r0, #1 bls _08089768 cmp r1, #0x29 beq _08089768 ldrb r0, [r5] bl sub_0808094C asrs r1, r4, #0x10 ldr r2, _08089764 @ =0x00002004 adds r0, r0, r2 adds r2, r0, r1 ldrb r2, [r2] subs r1, r1, r7 adds r0, r0, r1 ldrb r0, [r0] cmp r2, #0 bne _08089768 cmp r0, #0 bne _08089768 movs r0, #1 b _0808976A .align 2, 0 _08089750: .4byte gLinkState _08089754: .4byte gLinkEntity _08089758: .4byte gUnk_080B4468 _0808975C: .4byte gUnk_080B4488 _08089760: .4byte gRoomControls _08089764: .4byte 0x00002004 _08089768: movs r0, #0 _0808976A: pop {r4, r5, r6, r7, pc} thumb_func_start sub_0808976C sub_0808976C: @ 0x0808976C push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _080897D0 movs r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4, #0x18] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x18] ldrb r0, [r4, #0xb] strb r0, [r4, #0x1e] ldrb r0, [r4, #0x1b] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] orrs r0, r1 strb r0, [r4, #0x19] ldrb r0, [r4, #0xa] cmp r0, #3 bne _080897AE adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #8 rsbs r1, r1, #0 ands r1, r0 movs r0, #6 orrs r1, r0 strb r1, [r2] b _080897BA _080897AE: adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] _080897BA: ldrh r0, [r4, #0x2e] adds r1, r4, #0 adds r1, #0x68 strh r0, [r1] ldrh r0, [r4, #0x32] adds r1, #2 strh r0, [r1] adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 _080897D0: ldrb r1, [r4, #0x10] movs r0, #0x10 ands r0, r1 cmp r0, #0 bne _08089840 movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08089844 @ =gRoomControls movs r3, #0xa ldrsh r0, [r2, r3] subs r5, r1, r0 adds r3, r5, #0 subs r3, #0x78 movs r6, #0x32 ldrsh r1, [r4, r6] movs r6, #0xc ldrsh r0, [r2, r6] subs r1, r1, r0 adds r2, r1, #0 subs r2, #0x50 adds r0, r3, #0 cmp r0, #0 bge _08089802 adds r0, r5, #0 subs r0, #0x75 _08089802: asrs r3, r0, #2 adds r0, r2, #0 cmp r0, #0 bge _0808980E adds r0, r1, #0 subs r0, #0x4d _0808980E: asrs r2, r0, #2 movs r0, #0x10 rsbs r0, r0, #0 cmp r3, r0 bge _0808981A adds r3, r0, #0 _0808981A: cmp r3, #0x10 ble _08089820 movs r3, #0x10 _08089820: cmp r2, r0 bge _08089826 adds r2, r0, #0 _08089826: cmp r2, #0x10 ble _0808982C movs r2, #0x10 _0808982C: adds r0, r4, #0 adds r0, #0x68 ldrh r0, [r0] adds r0, r0, r3 strh r0, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x6a ldrh r0, [r0] adds r0, r0, r2 strh r0, [r4, #0x32] _08089840: pop {r4, r5, r6, pc} .align 2, 0 _08089844: .4byte gRoomControls thumb_func_start sub_08089848 sub_08089848: @ 0x08089848 push {r4, lr} adds r4, r0, #0 ldr r1, _08089870 @ =gUnk_08120D90 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 bl Random movs r1, #1 ands r1, r0 adds r1, #1 adds r0, r4, #0 bl sub_08004276 pop {r4, pc} .align 2, 0 _08089870: .4byte gUnk_08120D90 thumb_func_start sub_08089874 sub_08089874: @ 0x08089874 push {r4, r5, lr} adds r4, r0, #0 ldrb r1, [r4, #0x10] movs r3, #1 adds r0, r3, #0 ands r0, r1 cmp r0, #0 beq _08089940 adds r0, r4, #0 adds r0, #0x38 movs r2, #3 strb r2, [r0] ldrb r1, [r4, #0xb] adds r5, r0, #0 cmp r1, #0 bne _08089900 ldrb r0, [r4, #0xa] cmp r0, #0x80 bne _080898B4 strb r2, [r4, #0xc] ldrb r0, [r4, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 movs r1, #0 bl UpdateSprite adds r0, r4, #0 bl sub_08089AE0 b _08089940 _080898B4: str r1, [r4, #0x50] adds r0, r4, #0 movs r1, #0x29 movs r2, #0 movs r3, #0xff bl CreateObjectWithParent ldrb r0, [r4, #0xa] cmp r0, #0 beq _080898FA _080898C8: ldrb r3, [r4, #0xa] adds r0, r4, #0 movs r1, #0x29 movs r2, #0 bl CreateObjectWithParent adds r1, r0, #0 str r1, [r4, #0x54] cmp r1, #0 beq _080898EE ldr r0, [r4, #0x50] str r0, [r1, #0x50] ldr r1, [r4, #0x50] cmp r1, #0 beq _080898EA ldr r0, [r4, #0x54] str r0, [r1, #0x54] _080898EA: ldr r0, [r4, #0x54] str r0, [r4, #0x50] _080898EE: ldrb r0, [r4, #0xa] subs r0, #1 strb r0, [r4, #0xa] lsls r0, r0, #0x18 cmp r0, #0 bne _080898C8 _080898FA: bl sub_0805E780 b _08089940 _08089900: strb r3, [r4, #0xc] ldr r0, [r4, #0x50] cmp r0, #0 bne _08089912 adds r0, r4, #0 movs r1, #0 bl UpdateSprite b _0808991A _08089912: adds r0, r4, #0 movs r1, #1 bl UpdateSprite _0808991A: ldrb r0, [r4, #0xb] cmp r0, #0xff bne _08089934 movs r0, #1 strb r0, [r5] adds r0, r4, #0 bl sub_08016A30 adds r0, r4, #0 movs r1, #0x15 bl sub_0801D2B4 b _08089940 _08089934: ldrb r1, [r4, #0xb] lsls r0, r1, #3 adds r0, r0, r1 lsls r0, r0, #2 rsbs r0, r0, #0 strh r0, [r4, #0x36] _08089940: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08089944 sub_08089944: @ 0x08089944 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r3, [r4, #0xb] cmp r3, #0xff bne _08089964 adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldrb r0, [r4, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] b _08089A76 _08089964: ldrb r1, [r4, #0x1b] movs r2, #0x3f adds r0, r2, #0 ands r0, r1 movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] ands r2, r0 strb r2, [r4, #0x19] cmp r3, #1 beq _08089984 ldr r0, [r4, #0x54] ldrb r0, [r0, #0xc] cmp r0, #2 bne _08089A76 _08089984: ldr r0, _08089998 @ =gLinkEntity movs r1, #0x36 ldrsh r2, [r0, r1] movs r1, #0x24 rsbs r1, r1, #0 adds r6, r0, #0 cmp r2, r1 bge _0808999C movs r0, #1 b _0808999E .align 2, 0 _08089998: .4byte gLinkEntity _0808999C: movs r0, #0 _0808999E: strb r0, [r4, #0xe] ldrb r0, [r4, #0xb] subs r0, #1 lsls r1, r0, #3 adds r1, r1, r0 lsls r1, r1, #2 ldrh r0, [r4, #0x32] subs r0, r0, r1 strh r0, [r4, #0x32] adds r5, r6, #0 adds r0, r4, #0 adds r1, r5, #0 movs r2, #0xf movs r3, #0xf bl sub_080041A0 cmp r0, #0 beq _08089A62 ldrb r0, [r4, #0xe] cmp r0, #0 beq _08089A62 movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x1b] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] ldrb r0, [r4, #0xb] cmp r0, #1 beq _080899EC ldr r1, [r4, #0x54] movs r0, #1 strb r0, [r1, #0xc] _080899EC: ldr r1, _08089A78 @ =gLinkState movs r0, #1 strb r0, [r1, #0x14] ldrh r0, [r5, #0x32] subs r0, #0x24 strh r0, [r5, #0x32] ldrh r0, [r5, #0x36] adds r0, #0x24 strh r0, [r5, #0x36] adds r0, r5, #0 bl sub_0807AA80 ldrb r0, [r4, #0xf] cmp r0, #0 bne _08089A62 adds r0, r5, #0 movs r1, #2 movs r2, #0 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _08089A20 ldrh r0, [r1, #0x2e] adds r0, #8 strh r0, [r1, #0x2e] _08089A20: adds r0, r5, #0 movs r1, #2 movs r2, #0 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _08089A36 ldrh r0, [r1, #0x2e] subs r0, #8 strh r0, [r1, #0x2e] _08089A36: adds r0, r5, #0 movs r1, #2 movs r2, #0 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _08089A4C ldrh r0, [r1, #0x32] adds r0, #8 strh r0, [r1, #0x32] _08089A4C: adds r0, r6, #0 movs r1, #2 movs r2, #0 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _08089A62 ldrh r0, [r1, #0x32] subs r0, #8 strh r0, [r1, #0x32] _08089A62: ldrb r0, [r4, #0xb] subs r0, #1 lsls r1, r0, #3 adds r1, r1, r0 lsls r1, r1, #2 ldrh r0, [r4, #0x32] adds r1, r1, r0 strh r1, [r4, #0x32] ldrb r0, [r4, #0xe] strb r0, [r4, #0xf] _08089A76: pop {r4, r5, r6, pc} .align 2, 0 _08089A78: .4byte gLinkState thumb_func_start sub_08089A7C sub_08089A7C: @ 0x08089A7C push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xb] lsls r1, r0, #3 adds r1, r1, r0 lsls r1, r1, #2 ldrh r0, [r4, #0x32] subs r0, r0, r1 strh r0, [r4, #0x32] ldr r5, _08089AB0 @ =gLinkEntity adds r0, r4, #0 adds r1, r5, #0 movs r2, #0xf movs r3, #0xf bl sub_080041A0 cmp r0, #0 beq _08089AB8 ldr r2, _08089AB4 @ =gLinkState movs r0, #1 strb r0, [r2, #0x14] ldr r0, [r2, #0x30] movs r1, #2 orrs r0, r1 str r0, [r2, #0x30] b _08089AD0 .align 2, 0 _08089AB0: .4byte gLinkEntity _08089AB4: .4byte gLinkState _08089AB8: movs r2, #1 strb r2, [r4, #0xc] ldrh r1, [r4, #0x36] ldrh r3, [r5, #0x36] adds r0, r1, r3 strh r0, [r5, #0x36] ldrh r0, [r5, #0x32] subs r0, r0, r1 strh r0, [r5, #0x32] adds r0, r5, #0 adds r0, #0x38 strb r2, [r0] _08089AD0: ldrb r1, [r4, #0xb] lsls r0, r1, #3 adds r0, r0, r1 lsls r0, r0, #2 ldrh r1, [r4, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] pop {r4, r5, pc} thumb_func_start sub_08089AE0 sub_08089AE0: @ 0x08089AE0 push {lr} ldr r1, _08089AF8 @ =gLinkEntity movs r2, #0xf movs r3, #0xf bl sub_080041A0 cmp r0, #0 beq _08089AF6 ldr r1, _08089AFC @ =gLinkState movs r0, #1 strb r0, [r1, #0x14] _08089AF6: pop {pc} .align 2, 0 _08089AF8: .4byte gLinkEntity _08089AFC: .4byte gLinkState thumb_func_start sub_08089B00 sub_08089B00: @ 0x08089B00 push {lr} ldr r2, _08089B14 @ =gUnk_08120DD0 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08089B14: .4byte gUnk_08120DD0 thumb_func_start sub_08089B18 sub_08089B18: @ 0x08089B18 push {r4, r5, r6, lr} adds r4, r0, #0 movs r2, #1 movs r6, #1 strb r6, [r4, #0xc] ldrb r1, [r4, #0x18] movs r5, #4 rsbs r5, r5, #0 adds r0, r5, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r0, [r4, #0xb] cmp r0, #0 beq _08089B38 strb r0, [r4, #0xe] _08089B38: adds r0, r4, #0 movs r1, #0 bl UpdateSprite ldrb r0, [r4, #0xa] cmp r0, #2 beq _08089B66 cmp r0, #2 bgt _08089B50 cmp r0, #1 beq _08089B5A b _08089B96 _08089B50: cmp r0, #3 beq _08089B72 cmp r0, #4 beq _08089B7C b _08089B96 _08089B5A: ldrh r0, [r4, #0x32] subs r0, #8 strh r0, [r4, #0x32] movs r0, #0x28 strb r0, [r4, #0xe] b _08089B96 _08089B66: movs r0, #0xf strb r0, [r4, #0xe] adds r0, r4, #0 bl sub_08004168 b _08089B96 _08089B72: ldr r0, [r4, #0x50] adds r1, r4, #0 bl CopyPosition b _08089B96 _08089B7C: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _08089B96 ldrb r1, [r4, #0x18] adds r0, r5, #0 ands r0, r1 strb r0, [r4, #0x18] strb r6, [r4, #0xd] b _08089B9E _08089B96: movs r0, #0x92 lsls r0, r0, #1 bl sub_08004488 _08089B9E: pop {r4, r5, r6, pc} thumb_func_start sub_08089BA0 sub_08089BA0: @ 0x08089BA0 push {r4, r5, r6, lr} adds r5, r0, #0 bl sub_08004274 ldrb r0, [r5, #0xa] cmp r0, #4 bhi _08089BD0 lsls r0, r0, #2 ldr r1, _08089BB8 @ =_08089BBC adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08089BB8: .4byte _08089BBC _08089BBC: @ jump table .4byte _08089BD0 @ case 0 .4byte _08089BD6 @ case 1 .4byte _08089BD6 @ case 2 .4byte _08089C4C @ case 3 .4byte _08089C72 @ case 4 _08089BD0: ldrb r0, [r5, #0xb] cmp r0, #0 beq _08089CBA _08089BD6: ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _08089CBA ldrb r0, [r5, #0xa] cmp r0, #2 bne _08089C42 ldr r0, [r5, #0x54] ldrh r0, [r0, #6] movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08089C48 @ =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_0807B7D8 adds r0, r5, #0 movs r1, #0 movs r2, #0x10 bl sub_0807AB44 subs r4, #0x4f adds r0, r5, #0 movs r1, #0 adds r2, r4, #0 bl sub_0807AB44 adds r0, r5, #0 movs r1, #0x10 movs r2, #0 bl sub_0807AB44 adds r0, r5, #0 adds r1, r4, #0 movs r2, #0 bl sub_0807AB44 _08089C42: bl sub_0805E780 b _08089CBA .align 2, 0 _08089C48: .4byte gRoomControls _08089C4C: ldr r0, [r5, #0x50] ldr r0, [r0, #4] cmp r0, #0 bne _08089C58 bl sub_0805E780 _08089C58: ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08089C68 bl sub_0805E780 _08089C68: ldr r0, [r5, #0x50] adds r1, r5, #0 bl CopyPosition b _08089CBA _08089C72: adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 adds r1, r0, #0 ldrb r0, [r5, #0xd] cmp r0, #0 bne _08089C96 cmp r1, #0 bne _08089CBA movs r0, #1 strb r0, [r5, #0xd] ldrb r1, [r5, #0x18] subs r0, #5 ands r0, r1 strb r0, [r5, #0x18] b _08089CBA _08089C96: cmp r1, #0 beq _08089CBA movs r0, #0 strb r0, [r5, #0xd] ldrb r1, [r5, #0x18] subs r0, #4 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] adds r0, r5, #0 movs r1, #0 bl UpdateSprite movs r0, #0x92 lsls r0, r0, #1 bl sub_08004488 _08089CBA: pop {r4, r5, r6, pc} thumb_func_start sub_08089CBC sub_08089CBC: @ 0x08089CBC push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0xc] cmp r1, #0 bne _08089CDC movs r0, #1 strb r0, [r4, #0xc] str r1, [r4, #0x34] ldrb r0, [r4, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 movs r1, #9 bl UpdateSprite _08089CDC: ldr r1, [r4, #0x50] ldr r0, [r1, #0x34] cmp r0, #0 bne _08089CEA bl sub_0805E780 b _08089D02 _08089CEA: movs r2, #0x36 ldrsh r0, [r1, r2] movs r2, #0x90 lsls r2, r2, #1 subs r2, r2, r0 adds r0, r1, #0 adds r0, #0x7e ldrh r3, [r0] adds r0, r4, #0 adds r1, r2, #0 bl sub_0805EC9C _08089D02: pop {r4, pc} thumb_func_start sub_08089D04 sub_08089D04: @ 0x08089D04 push {lr} ldr r2, _08089D18 @ =gUnk_08120DF4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08089D18: .4byte gUnk_08120DF4 thumb_func_start sub_08089D1C sub_08089D1C: @ 0x08089D1C push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r1, [r5, #0x19] movs r4, #0x3f adds r0, r4, #0 ands r0, r1 movs r6, #0x80 orrs r0, r6 strb r0, [r5, #0x19] ldrb r1, [r5, #0x1b] adds r0, r4, #0 ands r0, r1 movs r1, #0x40 orrs r0, r1 strb r0, [r5, #0x1b] adds r0, r5, #0 movs r1, #4 bl sub_0805E3A0 ldrb r0, [r5, #0xa] cmp r0, #7 bne _08089D90 ldrb r1, [r5, #0x10] movs r0, #1 ands r0, r1 cmp r0, #0 bne _08089D54 b _08089F06 _08089D54: ldrb r0, [r5, #0xb] cmp r0, #0 bne _08089D74 ldrb r0, [r5, #0xe] cmp r0, #0 beq _08089D74 bl sub_0807CBD0 cmp r0, #0 bne _08089D6A b _08089F06 _08089D6A: ldrb r1, [r5, #0x1b] adds r0, r4, #0 ands r0, r1 orrs r0, r6 strb r0, [r5, #0x1b] _08089D74: ldr r4, _08089D8C @ =gUnk_08120E3C ldrb r0, [r5, #0xb] lsls r0, r0, #2 adds r0, r0, r4 ldrb r1, [r0] adds r0, r5, #0 bl UpdateSprite ldrb r0, [r5, #0xb] lsls r0, r0, #2 adds r0, r0, r4 b _08089DCE .align 2, 0 _08089D8C: .4byte gUnk_08120E3C _08089D90: cmp r0, #0 beq _08089DAC ldr r0, _08089DA8 @ =gUnk_08120E14 ldrb r1, [r5, #0xa] lsls r1, r1, #2 adds r1, r1, r0 ldrb r1, [r1] adds r0, r5, #0 bl UpdateSprite b _08089DC6 .align 2, 0 _08089DA8: .4byte gUnk_08120E14 _08089DAC: adds r0, r5, #0 movs r1, #1 movs r2, #2 bl sub_080AE008 ldr r0, _08089E08 @ =gUnk_08120E14 ldrb r1, [r5, #0xa] lsls r1, r1, #2 adds r1, r1, r0 ldrb r1, [r1] adds r0, r5, #0 bl LoadAnimation _08089DC6: ldr r1, _08089E08 @ =gUnk_08120E14 ldrb r0, [r5, #0xa] lsls r0, r0, #2 adds r0, r0, r1 _08089DCE: ldrb r0, [r0, #1] adds r3, r5, #0 adds r3, #0x29 movs r1, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] movs r2, #1 movs r0, #1 strb r0, [r5, #0xc] ldrb r1, [r5, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r5, #0x18] ldrb r0, [r5, #0xa] cmp r0, #1 bge _08089DFC b _08089F00 _08089DFC: cmp r0, #6 ble _08089E0C cmp r0, #7 beq _08089E1C b _08089F00 .align 2, 0 _08089E08: .4byte gUnk_08120E14 _08089E0C: adds r0, r5, #0 adds r0, #0x60 movs r2, #0 movs r1, #0xe0 lsls r1, r1, #1 strh r1, [r0] strb r2, [r5, #0xe] b _08089F00 _08089E1C: ldrb r1, [r5, #0xb] cmp r1, #3 bgt _08089E2C cmp r1, #2 bge _08089EEC cmp r1, #0 beq _08089E32 b _08089F00 _08089E2C: cmp r1, #4 beq _08089EF8 b _08089F00 _08089E32: movs r0, #0x10 str r0, [r5, #0x6c] strb r1, [r5, #0xe] _08089E38: movs r0, #0x2c movs r1, #7 movs r2, #1 bl CreateObject adds r1, r0, #0 str r1, [r5, #0x54] cmp r1, #0 beq _08089EC8 ldrh r0, [r5, #0x2e] strh r0, [r1, #0x2e] ldr r2, [r5, #0x54] ldr r1, [r5, #0x6c] ldrh r0, [r5, #0x32] subs r0, r0, r1 strh r0, [r2, #0x32] movs r0, #3 strb r0, [r5, #0xf] _08089E5C: ldrb r0, [r5, #0xe] lsls r0, r0, #2 ldr r1, _08089EE4 @ =gUnk_08120DFC adds r4, r0, r1 ldrb r2, [r4] subs r2, #2 movs r0, #0x2c movs r1, #7 bl CreateObject adds r1, r0, #0 str r1, [r5, #0x54] cmp r1, #0 beq _08089EAA movs r0, #1 ldrsb r0, [r4, r0] ldrh r2, [r5, #0x2e] adds r0, r0, r2 strh r0, [r1, #0x2e] ldr r2, [r5, #0x54] ldr r1, [r5, #0x6c] ldrh r0, [r5, #0x32] subs r0, r0, r1 movs r1, #2 ldrsb r1, [r4, r1] subs r0, r0, r1 strh r0, [r2, #0x32] ldr r3, [r5, #0x54] ldrb r2, [r4, #3] movs r0, #1 ands r2, r0 lsls r2, r2, #6 ldrb r0, [r3, #0x18] movs r4, #0x41 rsbs r4, r4, #0 adds r1, r4, #0 ands r0, r1 orrs r0, r2 strb r0, [r3, #0x18] _08089EAA: ldrb r0, [r5, #0xe] adds r2, r0, #1 strb r2, [r5, #0xe] ldrb r0, [r5, #0xf] subs r0, #1 strb r0, [r5, #0xf] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _08089E5C lsls r0, r2, #0x18 lsrs r0, r0, #0x18 cmp r0, #5 bls _08089EC8 strb r1, [r5, #0xe] _08089EC8: ldr r0, [r5, #0x6c] adds r0, #0x38 str r0, [r5, #0x6c] ldrh r1, [r5, #0x32] subs r1, r1, r0 lsls r1, r1, #0x10 asrs r1, r1, #0x10 ldr r0, _08089EE8 @ =gRoomControls ldrh r0, [r0, #8] cmp r1, r0 bge _08089E38 movs r0, #1 strb r0, [r5, #0xe] b _08089F00 .align 2, 0 _08089EE4: .4byte gUnk_08120DFC _08089EE8: .4byte gRoomControls _08089EEC: ldrb r0, [r5, #0x19] movs r1, #0x3f ands r1, r0 movs r0, #0x40 orrs r1, r0 strb r1, [r5, #0x19] _08089EF8: adds r1, r5, #0 adds r1, #0x38 movs r0, #3 strb r0, [r1] _08089F00: adds r0, r5, #0 bl sub_08089F08 _08089F06: pop {r4, r5, r6, pc} thumb_func_start sub_08089F08 sub_08089F08: @ 0x08089F08 push {lr} ldr r2, _08089F1C @ =gUnk_08120E50 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08089F1C: .4byte gUnk_08120E50 thumb_func_start sub_08089F20 sub_08089F20: @ 0x08089F20 push {lr} ldr r2, _08089F34 @ =gUnk_08120E78 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08089F34: .4byte gUnk_08120E78 thumb_func_start sub_08089F38 sub_08089F38: @ 0x08089F38 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08089F6C ldrb r0, [r4, #0xe] cmp r0, #1 bhi _08089F5A adds r0, #1 strb r0, [r4, #0xe] b _08089F6C _08089F5A: adds r0, r4, #0 movs r1, #1 bl LoadAnimation movs r0, #0x10 strb r0, [r4, #0xe] ldrb r0, [r4, #0xd] adds r0, #1 strb r0, [r4, #0xd] _08089F6C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08089F70 sub_08089F70: @ 0x08089F70 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _08089F8E movs r0, #0x10 strb r0, [r4, #0xe] movs r0, #0xcc lsls r0, r0, #1 bl PlaySFX _08089F8E: adds r0, r4, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08089FEC movs r0, #0x2c movs r1, #1 movs r2, #0 bl CreateObject adds r1, r0, #0 str r1, [r4, #0x54] cmp r1, #0 beq _08089FBE ldrh r0, [r4, #0x2e] strh r0, [r1, #0x2e] ldr r1, [r4, #0x54] ldrh r0, [r4, #0x32] strh r0, [r1, #0x32] _08089FBE: movs r0, #0x2c movs r1, #2 movs r2, #0 bl CreateObject adds r1, r0, #0 str r1, [r4, #0x54] cmp r1, #0 beq _08089FDC ldrh r0, [r4, #0x2e] strh r0, [r1, #0x2e] ldr r1, [r4, #0x54] ldrh r0, [r4, #0x32] subs r0, #0x10 strh r0, [r1, #0x32] _08089FDC: ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 strb r1, [r4, #0x18] ldrb r0, [r4, #0xd] adds r0, #1 strb r0, [r4, #0xd] _08089FEC: pop {r4, pc} .align 2, 0 thumb_func_start sub_08089FF0 sub_08089FF0: @ 0x08089FF0 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _0808A00E movs r0, #0x10 strb r0, [r1, #0xe] movs r0, #0xcc lsls r0, r0, #1 bl PlaySFX _0808A00E: pop {pc} thumb_func_start sub_0808A010 sub_0808A010: @ 0x0808A010 push {r4, r5, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808A07E ldrb r0, [r4, #0xe] lsls r0, r0, #2 ldr r1, _0808A0BC @ =gUnk_08120DFC adds r5, r0, r1 ldrb r1, [r5] movs r0, #0x2c movs r2, #0 bl CreateObject adds r1, r0, #0 str r1, [r4, #0x54] cmp r1, #0 beq _0808A06C movs r0, #1 ldrsb r0, [r5, r0] ldrh r2, [r4, #0x2e] adds r0, r0, r2 strh r0, [r1, #0x2e] ldr r2, [r4, #0x54] movs r1, #2 ldrsb r1, [r5, r1] ldrh r0, [r4, #0x32] subs r0, r0, r1 strh r0, [r2, #0x32] ldr r3, [r4, #0x54] ldrb r1, [r5, #3] movs r0, #1 ands r1, r0 lsls r1, r1, #6 ldrb r2, [r3, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3, #0x18] _0808A06C: ldrb r0, [r4, #0xe] adds r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #5 bls _0808A07E movs r0, #0 strb r0, [r4, #0xe] _0808A07E: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808A0BA movs r0, #0x2c movs r1, #3 movs r2, #0 bl CreateObject adds r1, r0, #0 str r1, [r4, #0x54] cmp r1, #0 beq _0808A0A8 ldrh r0, [r4, #0x2e] strh r0, [r1, #0x2e] ldr r1, [r4, #0x54] ldrh r0, [r4, #0x32] strh r0, [r1, #0x32] _0808A0A8: ldrh r0, [r4, #0x32] subs r0, #0x38 strh r0, [r4, #0x32] lsls r0, r0, #0x10 cmp r0, #0 bge _0808A0BA adds r0, r4, #0 bl sub_0805E7BC _0808A0BA: pop {r4, r5, pc} .align 2, 0 _0808A0BC: .4byte gUnk_08120DFC thumb_func_start sub_0808A0C0 sub_0808A0C0: @ 0x0808A0C0 push {lr} adds r2, r0, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _0808A0D6 adds r0, r2, #0 bl sub_08004274 _0808A0D6: pop {pc} thumb_func_start nullsub_517 nullsub_517: @ 0x0808A0D8 bx lr .align 2, 0 thumb_func_start sub_0808A0DC sub_0808A0DC: @ 0x0808A0DC push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r0, #0 ldrb r0, [r5, #0xb] cmp r0, #1 bne _0808A0EC b _0808A202 _0808A0EC: cmp r0, #1 bgt _0808A0F6 cmp r0, #0 beq _0808A120 b _0808A202 _0808A0F6: cmp r0, #4 ble _0808A0FC b _0808A202 _0808A0FC: ldr r0, _0808A118 @ =gLinkState ldrb r0, [r0, #0x12] cmp r0, #0x1e bne _0808A1DA ldr r1, _0808A11C @ =gLinkEntity adds r0, r5, #0 movs r2, #0 movs r3, #8 bl sub_080041A0 cmp r0, #0 beq _0808A1DC b _0808A1B0 .align 2, 0 _0808A118: .4byte gLinkState _0808A11C: .4byte gLinkEntity _0808A120: ldrb r0, [r5, #0xe] cmp r0, #0 beq _0808A202 ldr r4, _0808A1A8 @ =gRoomControls ldrh r0, [r4, #8] str r0, [r5, #0x6c] movs r2, #0x2e ldrsh r1, [r5, r2] ldrh r2, [r4, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 ldrh r2, [r4, #8] subs r0, r0, r2 lsrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r0, r5, #0 adds r0, #0x70 strh r1, [r0] adds r6, r4, #0 mov r8, r3 adds r4, r0, #0 ldr r7, _0808A1AC @ =0x00004017 _0808A154: movs r0, #0x2e ldrsh r1, [r5, r0] ldrh r0, [r6, #6] subs r1, r1, r0 asrs r1, r1, #4 mov r2, r8 ands r1, r2 ldrh r2, [r6, #8] ldr r0, [r5, #0x6c] subs r0, r0, r2 lsrs r0, r0, #4 mov r2, r8 ands r0, r2 lsls r0, r0, #6 orrs r1, r0 strh r1, [r4] ldrh r1, [r4] adds r0, r7, #0 movs r2, #2 bl UpdateCollisionLayer ldrh r1, [r4] adds r0, r7, #0 movs r2, #1 bl UpdateCollisionLayer ldr r0, [r5, #0x6c] adds r2, r0, #0 adds r2, #0x10 str r2, [r5, #0x6c] ldrh r0, [r6, #8] ldrh r1, [r6, #0x20] adds r0, r0, r1 cmp r2, r0 bhs _0808A1A2 movs r1, #0x32 ldrsh r0, [r5, r1] cmp r2, r0 bls _0808A154 _0808A1A2: movs r0, #0 strb r0, [r5, #0xe] b _0808A202 .align 2, 0 _0808A1A8: .4byte gRoomControls _0808A1AC: .4byte 0x00004017 _0808A1B0: adds r3, r5, #0 adds r3, #0x58 ldrb r2, [r3] ldrb r1, [r5, #0xb] subs r1, #1 lsls r0, r1, #1 adds r0, r0, r1 adds r0, #1 cmp r2, r0 bne _0808A1DE ldrb r0, [r5, #0xe] cmp r0, #0 bne _0808A1DE movs r0, #1 strb r0, [r5, #0xe] ldrb r1, [r3] adds r1, #1 adds r0, r5, #0 bl UpdateSprite b _0808A1DE _0808A1DA: movs r0, #0 _0808A1DC: strb r0, [r5, #0xe] _0808A1DE: adds r0, r5, #0 bl sub_08004274 adds r0, r5, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808A202 ldrb r0, [r5, #0xb] subs r0, #1 lsls r1, r0, #1 adds r1, r1, r0 adds r1, #1 adds r0, r5, #0 bl UpdateSprite _0808A202: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} thumb_func_start sub_0808A208 sub_0808A208: @ 0x0808A208 push {lr} ldr r2, _0808A21C @ =gUnk_08120E84 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808A21C: .4byte gUnk_08120E84 thumb_func_start sub_0808A220 sub_0808A220: @ 0x0808A220 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldrb r1, [r4, #0x1b] movs r6, #0x3f adds r0, r6, #0 ands r0, r1 movs r5, #0x80 orrs r0, r5 strb r0, [r4, #0x1b] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _0808A2E4 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r7, #0x32 ldrsh r0, [r4, r7] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r2, r4, #0 adds r2, #0x70 strh r1, [r2] ldr r0, _0808A2E8 @ =0x00004017 ldrh r1, [r2] movs r2, #1 bl UpdateCollisionLayer movs r7, #1 strb r7, [r4, #0xd] adds r0, r4, #0 movs r1, #0x15 movs r2, #0 movs r3, #0 bl CreateObjectWithParent adds r3, r0, #0 cmp r3, #0 beq _0808A2D4 ldrh r0, [r4, #0x32] adds r0, #0x38 strh r0, [r3, #0x32] ldrh r0, [r4, #0x12] strh r0, [r3, #0x12] adds r0, r4, #0 adds r0, #0x60 ldrh r1, [r0] adds r0, r3, #0 adds r0, #0x60 strh r1, [r0] ldrb r1, [r4, #0x1a] lsls r1, r1, #0x1c lsrs r1, r1, #0x1c ldrb r2, [r3, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3, #0x1a] adds r1, r3, #0 adds r1, #0x58 movs r0, #2 strb r0, [r1] movs r0, #0x80 strb r0, [r3, #0xe] strb r7, [r3, #0xa] ldrb r1, [r3, #0x19] adds r0, r6, #0 ands r0, r1 orrs r0, r5 strb r0, [r3, #0x19] adds r2, r3, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] ldrb r1, [r3, #0x1b] adds r0, r6, #0 ands r0, r1 orrs r0, r5 strb r0, [r3, #0x1b] _0808A2D4: adds r0, r4, #0 movs r1, #0x2c movs r2, #9 movs r3, #0 bl CreateObjectWithParent pop {r4, r5, r6, r7, pc} .align 2, 0 _0808A2E4: .4byte gRoomControls _0808A2E8: .4byte 0x00004017 thumb_func_start nullsub_518 nullsub_518: @ 0x0808A2EC bx lr .align 2, 0 thumb_func_start sub_0808A2F0 sub_0808A2F0: @ 0x0808A2F0 push {r4, r5, r6, r7, lr} adds r5, r0, #0 ldrb r0, [r5, #0xd] cmp r0, #0 bne _0808A316 movs r0, #1 strb r0, [r5, #0xd] ldrh r0, [r5, #0x32] adds r0, #0x28 strh r0, [r5, #0x32] movs r2, #0x18 rsbs r2, r2, #0 adds r0, r5, #0 movs r1, #0 bl sub_0800029C adds r1, r5, #0 adds r1, #0x72 strh r0, [r1] _0808A316: ldr r3, _0808A38C @ =gLinkEntity ldrb r1, [r3, #0x1b] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r5, #0x1b] movs r7, #0x3f adds r0, r7, #0 ands r0, r2 orrs r0, r1 strb r0, [r5, #0x1b] ldrb r1, [r3, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r5, #0x19] adds r0, r7, #0 ands r0, r2 orrs r0, r1 strb r0, [r5, #0x19] ldr r0, _0808A390 @ =gLinkState ldrb r0, [r0, #0x12] cmp r0, #0x1e bne _0808A39C adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] movs r2, #0x18 rsbs r2, r2, #0 adds r0, r5, #0 movs r1, #0 bl sub_0800029C ldr r3, _0808A394 @ =0x00004014 cmp r0, r3 beq _0808A3EC movs r0, #0x2e ldrsh r1, [r5, r0] ldr r2, _0808A398 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 ands r1, r7 movs r4, #0x32 ldrsh r0, [r5, r4] ldrh r2, [r2, #8] adds r2, #0x18 subs r0, r0, r2 asrs r0, r0, #4 ands r0, r7 lsls r0, r0, #6 orrs r1, r0 adds r0, r3, #0 movs r2, #1 bl UpdateCollisionLayer b _0808A3EC .align 2, 0 _0808A38C: .4byte gLinkEntity _0808A390: .4byte gLinkState _0808A394: .4byte 0x00004014 _0808A398: .4byte gRoomControls _0808A39C: adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r2] adds r6, r5, #0 adds r6, #0x72 ldrh r4, [r6] movs r2, #0x18 rsbs r2, r2, #0 adds r0, r5, #0 movs r1, #0 bl sub_0800029C cmp r4, r0 beq _0808A3EC ldrh r0, [r6] movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _0808A3F0 @ =gRoomControls ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r7 movs r4, #0x32 ldrsh r2, [r5, r4] ldrh r3, [r3, #8] adds r3, #0x18 subs r2, r2, r3 asrs r2, r2, #4 ands r2, r7 lsls r2, r2, #6 orrs r1, r2 movs r2, #1 bl UpdateCollisionLayer _0808A3EC: pop {r4, r5, r6, r7, pc} .align 2, 0 _0808A3F0: .4byte gRoomControls thumb_func_start sub_0808A3F4 sub_0808A3F4: @ 0x0808A3F4 push {lr} ldr r2, _0808A408 @ =gUnk_08121060 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808A408: .4byte gUnk_08121060 thumb_func_start sub_0808A40C sub_0808A40C: @ 0x0808A40C push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0808A41E movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x28 strb r0, [r4, #0xe] _0808A41E: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808A466 bl Random movs r1, #0x1f ands r0, r1 movs r1, #0x40 subs r1, r1, r0 strb r1, [r4, #0xe] movs r0, #0x2d movs r1, #1 movs r2, #0 bl CreateObject adds r5, r0, #0 cmp r5, #0 beq _0808A466 adds r0, r4, #0 adds r1, r5, #0 bl CopyPosition bl Random ldr r2, _0808A468 @ =gUnk_08121068 movs r1, #7 ands r1, r0 adds r1, r1, r2 movs r0, #0 ldrsb r0, [r1, r0] ldrh r1, [r5, #0x2e] adds r0, r0, r1 strh r0, [r5, #0x2e] _0808A466: pop {r4, r5, pc} .align 2, 0 _0808A468: .4byte gUnk_08121068 thumb_func_start sub_0808A46C sub_0808A46C: @ 0x0808A46C push {lr} ldr r2, _0808A480 @ =gUnk_08121070 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808A480: .4byte gUnk_08121070 thumb_func_start sub_0808A484 sub_0808A484: @ 0x0808A484 push {r4, lr} movs r3, #1 movs r1, #1 strb r1, [r0, #0xc] ldrb r2, [r0, #0x18] subs r1, #5 ands r1, r2 orrs r1, r3 strb r1, [r0, #0x18] movs r1, #0x40 strh r1, [r0, #0x24] movs r1, #6 strb r1, [r0, #0x15] ldrb r3, [r0, #0x19] movs r2, #0x3f adds r1, r2, #0 ands r1, r3 movs r4, #0x40 orrs r1, r4 strb r1, [r0, #0x19] movs r1, #0x29 adds r1, r1, r0 mov ip, r1 ldrb r3, [r1] movs r1, #8 rsbs r1, r1, #0 ands r1, r3 mov r3, ip strb r1, [r3] ldrb r1, [r0, #0x1b] ands r2, r1 orrs r2, r4 strb r2, [r0, #0x1b] movs r1, #0x28 bl UpdateSprite pop {r4, pc} .align 2, 0 thumb_func_start sub_0808A4D0 sub_0808A4D0: @ 0x0808A4D0 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 bl sub_0806F69C adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808A4F2 adds r0, r4, #0 bl sub_0805E7BC _0808A4F2: pop {r4, pc} thumb_func_start sub_0808A4F4 sub_0808A4F4: @ 0x0808A4F4 push {lr} ldr r2, _0808A508 @ =gUnk_08121078 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808A508: .4byte gUnk_08121078 thumb_func_start sub_0808A50C sub_0808A50C: @ 0x0808A50C push {lr} ldrb r2, [r0, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r2 movs r2, #1 orrs r1, r2 strb r1, [r0, #0x18] ldrb r1, [r0, #0xc] adds r1, #1 strb r1, [r0, #0xc] ldrb r2, [r0, #0x19] movs r1, #0x3f ands r1, r2 movs r2, #0x80 orrs r1, r2 strb r1, [r0, #0x19] adds r3, r0, #0 adds r3, #0x29 ldrb r2, [r3] movs r1, #8 rsbs r1, r1, #0 ands r1, r2 movs r2, #4 orrs r1, r2 movs r2, #0x39 rsbs r2, r2, #0 ands r1, r2 movs r2, #0x18 orrs r1, r2 strb r1, [r3] bl sub_0808A644 pop {pc} thumb_func_start sub_0808A550 sub_0808A550: @ 0x0808A550 push {r4, lr} adds r4, r0, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002B0 adds r1, r0, #0 ldr r0, _0808A58C @ =0x0000401F cmp r1, r0 bhi _0808A5CC subs r0, #3 cmp r1, r0 blo _0808A5CC adds r0, r1, #0 subs r0, #0x1c lsls r1, r0, #1 strb r1, [r4, #0x14] lsls r1, r0, #3 strb r1, [r4, #0x15] lsls r0, r0, #0x19 lsrs r0, r0, #0x18 cmp r0, #2 bne _0808A590 ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 b _0808A598 .align 2, 0 _0808A58C: .4byte 0x0000401F _0808A590: ldrb r1, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r1 _0808A598: strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x70 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x74 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x14] lsrs r1, r1, #1 adds r1, #1 adds r0, r4, #0 bl UpdateSprite ldr r0, _0808A5C8 @ =0x0000010F bl sub_08004488 b _0808A5DE .align 2, 0 _0808A5C8: .4byte 0x0000010F _0808A5CC: adds r0, r4, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0 beq _0808A5DE adds r0, r4, #0 movs r1, #0 bl UpdateSprite _0808A5DE: pop {r4, pc} thumb_func_start sub_0808A5E0 sub_0808A5E0: @ 0x0808A5E0 push {r4, r5, lr} adds r4, r0, #0 bl sub_0800445C ldr r2, _0808A618 @ =gUnk_08121088 adds r5, r4, #0 adds r5, #0x5a ldrb r1, [r5] movs r0, #0xf ands r0, r1 lsls r0, r0, #1 adds r0, r0, r2 ldrh r0, [r0] strh r0, [r4, #0x24] adds r0, r4, #0 bl sub_0806F69C adds r0, r4, #0 bl sub_08004274 ldrb r1, [r5] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808A616 movs r0, #0 strb r0, [r4, #0xc] _0808A616: pop {r4, r5, pc} .align 2, 0 _0808A618: .4byte gUnk_08121088 thumb_func_start sub_0808A61C sub_0808A61C: @ 0x0808A61C push {lr} adds r2, r0, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _0808A634 adds r0, r2, #0 bl sub_08004274 b _0808A640 _0808A634: adds r0, r2, #0 adds r0, #0x29 ldrb r1, [r0] movs r2, #7 orrs r1, r2 strb r1, [r0] _0808A640: pop {pc} .align 2, 0 thumb_func_start sub_0808A644 sub_0808A644: @ 0x0808A644 push {r4, r5, r6, lr} adds r4, r0, #0 movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _0808A6D0 @ =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_080001DA adds r1, r4, #0 adds r1, #0x70 strh r0, [r1] ldrh r0, [r5] ldrb r1, [r6] bl sub_080002E0 adds r1, r4, #0 adds r1, #0x72 strb r0, [r1] ldrh r0, [r5] ldrb r1, [r6] bl sub_080002C8 cmp r0, #0x19 beq _0808A69E cmp r0, #0xf0 bne _0808A6E2 _0808A69E: ldr r0, _0808A6D4 @ =0x00004015 ldrh r1, [r5] ldrb r2, [r6] bl UpdateCollisionLayer movs r0, #3 strb r0, [r4, #0xc] adds r5, r4, #0 adds r5, #0x86 ldrh r0, [r5] bl sub_0807CBE4 cmp r0, #0 bne _0808A6D8 ldrh r0, [r5] bl sub_0807CCC8 movs r0, #0xcd bl PlaySFX adds r0, r4, #0 movs r1, #5 bl UpdateSprite b _0808A6EC .align 2, 0 _0808A6D0: .4byte gRoomControls _0808A6D4: .4byte 0x00004015 _0808A6D8: adds r0, r4, #0 movs r1, #6 bl UpdateSprite b _0808A6EC _0808A6E2: ldr r0, _0808A6F0 @ =0x0000401B ldrh r1, [r5] ldrb r2, [r6] bl UpdateCollisionLayer _0808A6EC: pop {r4, r5, r6, pc} .align 2, 0 _0808A6F0: .4byte 0x0000401B thumb_func_start sub_0808A6F4 sub_0808A6F4: @ 0x0808A6F4 push {lr} adds r2, r0, #0 adds r0, #0x3d movs r1, #0 ldrsb r1, [r0, r1] cmp r1, #0 bne _0808A706 adds r0, #0x33 strh r1, [r0] _0808A706: ldr r0, _0808A718 @ =gUnk_08121178 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 pop {pc} .align 2, 0 _0808A718: .4byte gUnk_08121178 thumb_func_start sub_0808A71C sub_0808A71C: @ 0x0808A71C push {r4, r5, lr} adds r4, r0, #0 movs r5, #1 strb r5, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r1, r4, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #3 movs r0, #0x8f strb r0, [r1] subs r1, #4 movs r0, #0xa strb r0, [r1] ldr r0, _0808A75C @ =gUnk_08121180 str r0, [r4, #0x48] ldrb r0, [r4, #0xa] cmp r0, #0 bne _0808A764 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0808A760 strb r5, [r4, #0xa] b _0808A76E .align 2, 0 _0808A75C: .4byte gUnk_08121180 _0808A760: strb r0, [r4, #0xa] b _0808A76E _0808A764: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 _0808A76E: adds r0, r4, #0 bl sub_0808A7D8 pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0808A778 sub_0808A778: @ 0x0808A778 push {r4, r5, lr} adds r5, r0, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808A7D0 adds r1, r5, #0 adds r1, #0x70 ldrh r0, [r1] cmp r0, #0 bne _0808A7D0 movs r0, #1 strh r0, [r1] ldrb r0, [r5, #0xa] movs r1, #1 eors r0, r1 strb r0, [r5, #0xa] adds r1, r5, #0 adds r1, #0x3d movs r0, #0xe8 strb r0, [r1] adds r0, r5, #0 bl sub_0808A7D8 adds r4, r5, #0 adds r4, #0x86 ldrh r0, [r4] bl sub_0807CBE4 cmp r0, #0 beq _0808A7C2 ldrh r0, [r4] bl sub_0807CD48 b _0808A7C8 _0808A7C2: ldrh r0, [r4] bl sub_0807CCC8 _0808A7C8: ldr r1, _0808A7D4 @ =0x00000117 adds r0, r5, #0 bl sub_0800449C _0808A7D0: pop {r4, r5, pc} .align 2, 0 _0808A7D4: .4byte 0x00000117 thumb_func_start sub_0808A7D8 sub_0808A7D8: @ 0x0808A7D8 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xa] cmp r0, #0 beq _0808A818 movs r0, #0xde lsls r0, r0, #2 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _0808A814 @ =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_0807B7D8 b _0808A844 .align 2, 0 _0808A814: .4byte gRoomControls _0808A818: ldr r0, _0808A848 @ =0x00000377 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _0808A84C @ =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_0807B7D8 _0808A844: pop {r4, r5, r6, pc} .align 2, 0 _0808A848: .4byte 0x00000377 _0808A84C: .4byte gRoomControls thumb_func_start sub_0808A850 sub_0808A850: @ 0x0808A850 push {r4, lr} adds r4, r0, #0 ldr r1, _0808A86C @ =gUnk_08121188 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl sub_08080CB4 pop {r4, pc} .align 2, 0 _0808A86C: .4byte gUnk_08121188 thumb_func_start sub_0808A870 sub_0808A870: @ 0x0808A870 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xa] cmp r0, #1 beq _0808A8BE cmp r0, #1 bgt _0808A884 cmp r0, #0 beq _0808A896 b _0808A8C4 _0808A884: cmp r0, #3 bgt _0808A8C4 adds r0, r5, #0 bl sub_0808A968 adds r0, r5, #0 bl sub_0808A8E0 b _0808A8C4 _0808A896: adds r0, r5, #0 adds r0, #0x38 ldrb r0, [r0] bl sub_0808094C adds r4, r0, #0 adds r0, r5, #0 bl sub_0806F798 lsls r0, r0, #1 adds r0, #4 adds r4, r4, r0 str r4, [r5, #0x6c] ldrh r1, [r4] adds r0, r5, #0 adds r0, #0x68 strh r1, [r0] movs r0, #1 strb r0, [r5, #0xc] b _0808A8C4 _0808A8BE: adds r0, r5, #0 bl sub_0808A968 _0808A8C4: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0808A8C8 sub_0808A8C8: @ 0x0808A8C8 push {lr} adds r2, r0, #0 adds r0, #0x68 ldr r1, [r2, #0x6c] ldrh r0, [r0] ldrh r1, [r1] cmp r0, r1 beq _0808A8DE adds r0, r2, #0 bl sub_0808A968 _0808A8DE: pop {pc} thumb_func_start sub_0808A8E0 sub_0808A8E0: @ 0x0808A8E0 push {r4, lr} adds r4, r0, #0 ldrb r2, [r4, #0xa] cmp r2, #0 beq _0808A8F0 cmp r2, #1 beq _0808A930 b _0808A954 _0808A8F0: ldr r0, [r4, #0x70] cmp r0, #0 beq _0808A930 ldr r3, [r4, #0x20] cmp r3, #0 bge _0808A926 movs r0, #0x36 ldrsh r1, [r4, r0] movs r0, #8 rsbs r0, r0, #0 cmp r1, r0 ble _0808A90C str r2, [r4, #0x70] b _0808A926 _0808A90C: ldr r0, _0808A918 @ =0xFFFFC000 cmp r3, r0 bge _0808A920 ldr r0, _0808A91C @ =0xFFFFFC00 b _0808A924 .align 2, 0 _0808A918: .4byte 0xFFFFC000 _0808A91C: .4byte 0xFFFFFC00 _0808A920: movs r0, #0x80 lsls r0, r0, #3 _0808A924: str r0, [r4, #0x70] _0808A926: ldr r1, [r4, #0x70] adds r0, r4, #0 bl sub_08003FC4 b _0808A962 _0808A930: ldr r2, _0808A964 @ =gUnk_08121194 ldrb r0, [r4, #0xf] adds r1, r0, #1 strb r1, [r4, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x1b movs r1, #7 ands r0, r1 adds r0, r0, r2 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 strh r0, [r4, #0x36] adds r0, r4, #0 bl sub_08017850 cmp r0, #0 beq _0808A962 _0808A954: ldrb r1, [r4, #0xb] movs r0, #0x5c movs r2, #0 bl sub_080A7C00 bl sub_0805E780 _0808A962: pop {r4, pc} .align 2, 0 _0808A964: .4byte gUnk_08121194 thumb_func_start sub_0808A968 sub_0808A968: @ 0x0808A968 push {r4, lr} adds r4, r0, #0 movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xe] ldrb r1, [r4, #0x18] subs r0, #0x22 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #0xa0 lsls r0, r0, #0xa str r0, [r4, #0x20] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] ldrb r1, [r4, #0x18] movs r0, #0x31 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] adds r2, #0x13 ldrb r1, [r2] movs r0, #0x10 orrs r0, r1 strb r0, [r2] ldr r0, _0808A9C0 @ =gUnk_08121C58 str r0, [r4, #0x48] adds r0, r4, #0 movs r1, #2 bl sub_0805E3A0 movs r0, #0xa0 lsls r0, r0, #6 str r0, [r4, #0x70] pop {r4, pc} .align 2, 0 _0808A9C0: .4byte gUnk_08121C58 thumb_func_start sub_0808A9C4 sub_0808A9C4: @ 0x0808A9C4 push {lr} ldr r2, _0808A9D8 @ =gUnk_0812119C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808A9D8: .4byte gUnk_0812119C thumb_func_start sub_0808A9DC sub_0808A9DC: @ 0x0808A9DC movs r1, #1 strb r1, [r0, #0xc] ldrb r1, [r0, #0xa] strb r1, [r0, #0x1e] ldrb r1, [r0, #0x19] movs r2, #0xc0 orrs r1, r2 strb r1, [r0, #0x19] adds r0, #0x29 ldrb r1, [r0] movs r2, #7 orrs r1, r2 strb r1, [r0] bx lr thumb_func_start nullsub_519 nullsub_519: @ 0x0808A9F8 bx lr .align 2, 0 thumb_func_start sub_0808A9FC sub_0808A9FC: @ 0x0808A9FC push {r4, lr} adds r4, r0, #0 ldr r1, _0808AA18 @ =gUnk_081211A4 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r4, #0x41 movs r0, #0 strb r0, [r4] pop {r4, pc} .align 2, 0 _0808AA18: .4byte gUnk_081211A4 thumb_func_start sub_0808AA1C sub_0808AA1C: @ 0x0808AA1C push {r4, r5, r6, r7, lr} adds r5, r0, #0 movs r4, #0 movs r6, #1 strb r6, [r5, #0xc] bl sub_08052660 cmp r0, #0 bne _0808AA36 adds r0, r5, #0 movs r1, #0 bl sub_0801D2B4 _0808AA36: ldrb r0, [r5, #0xa] cmp r0, #1 beq _0808AACC cmp r0, #1 bgt _0808AA46 cmp r0, #0 beq _0808AA4C b _0808AB5E _0808AA46: cmp r0, #2 beq _0808AB20 b _0808AB5E _0808AA4C: adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] ldr r0, _0808AAC0 @ =gUnk_080FD224 str r0, [r5, #0x48] strb r6, [r5, #0x16] ldr r0, _0808AAC4 @ =0x00004022 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _0808AAC8 @ =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 adds r0, r5, #0 adds r0, #0x45 strb r6, [r0] adds r1, r5, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #3 movs r0, #0x6e strb r0, [r1] subs r1, #4 movs r0, #0xe strb r0, [r1] strb r6, [r5, #0x1c] ldrb r0, [r5, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r5, #0x10] adds r1, r5, #0 adds r1, #0x63 movs r0, #4 strb r0, [r1] b _0808AB5E .align 2, 0 _0808AAC0: .4byte gUnk_080FD224 _0808AAC4: .4byte 0x00004022 _0808AAC8: .4byte gRoomControls _0808AACC: adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] ldrb r0, [r5, #0xb] cmp r0, #0 beq _0808AB10 ldr r0, _0808AB1C @ =gUnk_080FD224 str r0, [r5, #0x48] ldrb r0, [r5, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r5, #0x10] adds r0, r5, #0 adds r0, #0x45 strb r6, [r0] adds r1, r5, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #3 movs r0, #0x6e strb r0, [r1] subs r1, #4 movs r0, #4 strb r0, [r1] strb r6, [r5, #0x1c] movs r0, #3 strb r0, [r5, #0xc] _0808AB10: ldrb r1, [r5, #0x14] adds r1, #9 adds r0, r5, #0 bl UpdateSprite b _0808AB5E .align 2, 0 _0808AB1C: .4byte gUnk_080FD224 _0808AB20: adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r2] ldrb r0, [r5, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r5, #0x19] ldrb r1, [r5, #0x14] adds r0, r6, #0 ands r0, r1 cmp r0, #0 beq _0808AB52 movs r0, #0x80 lsls r0, r0, #2 str r0, [r5, #0x74] movs r0, #0x80 lsls r0, r0, #1 str r0, [r5, #0x78] b _0808AB5E _0808AB52: movs r0, #0x80 lsls r0, r0, #2 str r0, [r5, #0x78] movs r0, #0x80 lsls r0, r0, #1 str r0, [r5, #0x74] _0808AB5E: adds r0, r5, #0 bl sub_0808AB68 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0808AB68 sub_0808AB68: @ 0x0808AB68 push {lr} ldr r2, _0808AB7C @ =gUnk_081211B4 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808AB7C: .4byte gUnk_081211B4 thumb_func_start sub_0808AB80 sub_0808AB80: @ 0x0808AB80 push {lr} ldr r2, _0808AB94 @ =gUnk_081211C0 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808AB94: .4byte gUnk_081211C0 thumb_func_start sub_0808AB98 sub_0808AB98: @ 0x0808AB98 push {lr} adds r3, r0, #0 ldr r2, [r3, #0x50] ldrh r1, [r2, #0xc] ldr r0, _0808ABB0 @ =0x00000201 cmp r1, r0 bne _0808ABB4 movs r0, #0 str r0, [r2, #0x54] bl sub_0805E780 b _0808ABC2 .align 2, 0 _0808ABB0: .4byte 0x00000201 _0808ABB4: ldrb r0, [r2, #0xc] cmp r0, #2 bne _0808ABC2 adds r0, r3, #0 movs r1, #0 bl sub_0808B168 _0808ABC2: pop {pc} thumb_func_start sub_0808ABC4 sub_0808ABC4: @ 0x0808ABC4 push {r4, r5, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] ldrh r1, [r0, #0xc] ldr r0, _0808AC38 @ =0x00000201 cmp r1, r0 bne _0808ABD6 bl sub_0805E780 _0808ABD6: ldr r0, [r4, #0x54] ldr r1, [r4, #0x50] bl sub_0808B1F0 adds r2, r0, #0 cmp r2, #7 bhi _0808ABE6 movs r2, #0 _0808ABE6: ldrb r3, [r4, #0x14] lsls r1, r3, #2 ldr r0, _0808AC3C @ =gUnk_081211CC adds r5, r1, r0 cmp r2, #0x1f bhi _0808AC5A cmp r2, #0 beq _0808ABF8 subs r2, #6 _0808ABF8: ldrh r0, [r5] str r0, [r4, #0x70] ldr r1, [r4, #0x50] movs r0, #2 ldrsb r0, [r5, r0] ldrh r3, [r1, #0x2e] adds r0, r0, r3 strh r0, [r4, #0x2e] movs r0, #3 ldrsb r0, [r5, r0] ldrh r1, [r1, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] ldrb r1, [r4, #0x14] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808AC40 lsls r1, r2, #4 movs r0, #0x80 lsls r0, r0, #2 subs r0, r0, r1 str r0, [r4, #0x74] lsls r0, r2, #3 movs r1, #0x90 lsls r1, r1, #1 adds r0, r0, r1 str r0, [r4, #0x78] movs r0, #0xf strb r0, [r4, #0x1e] b _0808ACDE .align 2, 0 _0808AC38: .4byte 0x00000201 _0808AC3C: .4byte gUnk_081211CC _0808AC40: lsls r1, r2, #4 movs r0, #0x80 lsls r0, r0, #2 subs r0, r0, r1 str r0, [r4, #0x78] lsls r0, r2, #3 movs r3, #0x90 lsls r3, r3, #1 adds r0, r0, r3 str r0, [r4, #0x74] movs r0, #0x14 strb r0, [r4, #0x1e] b _0808ACDE _0808AC5A: movs r0, #1 ands r3, r0 cmp r3, #0 beq _0808AC9E adds r1, r2, #0 subs r1, #0x20 lsls r1, r1, #2 adds r0, #0xff subs r0, r0, r1 str r0, [r4, #0x74] lsls r0, r2, #3 movs r1, #0xa0 lsls r1, r1, #1 adds r0, r0, r1 str r0, [r4, #0x78] movs r0, #0x10 strb r0, [r4, #0x1e] ldrb r1, [r4, #0x14] movs r0, #2 ands r0, r1 cmp r0, #0 beq _0808AC92 ldr r0, [r4, #0x50] lsrs r1, r2, #1 ldrh r0, [r0, #0x2e] subs r0, r0, r1 strh r0, [r4, #0x2e] b _0808ACDE _0808AC92: ldr r1, [r4, #0x50] lsrs r0, r2, #1 ldrh r1, [r1, #0x2e] adds r0, r0, r1 strh r0, [r4, #0x2e] b _0808ACDE _0808AC9E: adds r1, r2, #0 subs r1, #0x20 lsls r1, r1, #2 movs r0, #0x80 lsls r0, r0, #1 subs r0, r0, r1 str r0, [r4, #0x78] lsls r0, r2, #3 movs r3, #0xa0 lsls r3, r3, #1 adds r0, r0, r3 str r0, [r4, #0x74] movs r0, #0x15 strb r0, [r4, #0x1e] ldrb r1, [r4, #0x14] movs r0, #2 ands r0, r1 cmp r0, #0 beq _0808ACCE ldr r0, [r4, #0x50] lsrs r1, r2, #1 ldrh r0, [r0, #0x32] adds r1, r1, r0 b _0808ACD6 _0808ACCE: ldr r0, [r4, #0x50] lsrs r2, r2, #1 ldrh r1, [r0, #0x32] subs r1, r1, r2 _0808ACD6: movs r0, #3 ldrsb r0, [r5, r0] adds r0, r0, r1 strh r0, [r4, #0x32] _0808ACDE: ldr r1, [r4, #0x74] ldr r2, [r4, #0x78] ldr r3, [r4, #0x70] adds r0, r4, #0 bl sub_0805EC9C pop {r4, r5, pc} thumb_func_start sub_0808ACEC sub_0808ACEC: @ 0x0808ACEC push {r4, lr} adds r4, r0, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0 beq _0808AD00 adds r0, r4, #0 movs r1, #0 bl UpdateSprite _0808AD00: adds r0, r4, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 subs r0, #4 cmp r0, #0x12 bhi _0808AD92 lsls r0, r0, #2 ldr r1, _0808AD1C @ =_0808AD20 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0808AD1C: .4byte _0808AD20 _0808AD20: @ jump table .4byte _0808AD6C @ case 0 .4byte _0808AD6C @ case 1 .4byte _0808AD6C @ case 2 .4byte _0808AD92 @ case 3 .4byte _0808AD6C @ case 4 .4byte _0808AD6C @ case 5 .4byte _0808AD6C @ case 6 .4byte _0808AD6C @ case 7 .4byte _0808AD6C @ case 8 .4byte _0808AD6C @ case 9 .4byte _0808AD92 @ case 10 .4byte _0808AD92 @ case 11 .4byte _0808AD6C @ case 12 .4byte _0808AD6C @ case 13 .4byte _0808AD6C @ case 14 .4byte _0808AD88 @ case 15 .4byte _0808AD6C @ case 16 .4byte _0808AD92 @ case 17 .4byte _0808AD6C @ case 18 _0808AD6C: ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] adds r0, r4, #0 adds r0, #0x3e ldrb r0, [r0] bl sub_0806F5A4 strb r0, [r4, #0x14] movs r0, #2 strb r0, [r4, #0xd] strb r0, [r4, #0xe] b _0808AD9E _0808AD88: movs r1, #0 movs r0, #3 strb r0, [r4, #0xc] strb r1, [r4, #0xd] b _0808AD9E _0808AD92: movs r0, #0 strb r0, [r4, #0xf] strb r0, [r4, #0xe] adds r0, r4, #0 bl sub_08078930 _0808AD9E: pop {r4, pc} thumb_func_start sub_0808ADA0 sub_0808ADA0: @ 0x0808ADA0 push {r4, lr} adds r4, r0, #0 ldr r1, [r4, #0x54] bl sub_0808B1F0 cmp r0, #7 bls _0808ADB4 ldr r1, [r4, #0x54] cmp r1, #0 bne _0808ADE2 _0808ADB4: ldrb r0, [r4, #0xd] adds r0, #1 strb r0, [r4, #0xd] movs r2, #2 movs r0, #2 strb r0, [r4, #0xe] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldrb r0, [r4, #0x14] eors r0, r2 strb r0, [r4, #0x14] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] b _0808ADEE _0808ADE2: movs r0, #0x80 lsls r0, r0, #3 strh r0, [r1, #0x24] ldr r0, [r4, #0x54] bl sub_0806F69C _0808ADEE: pop {r4, pc} thumb_func_start sub_0808ADF0 sub_0808ADF0: @ 0x0808ADF0 push {r4, lr} adds r4, r0, #0 ldrb r2, [r4, #0x14] adds r1, r2, #0 adds r1, #0xd adds r0, #0x58 ldrb r0, [r0] cmp r1, r0 bne _0808AE26 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808AE1E movs r0, #0 strb r0, [r4, #0xd] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] b _0808AE80 _0808AE1E: adds r0, r4, #0 bl sub_08004274 b _0808AE80 _0808AE26: adds r1, r2, #1 cmp r1, r0 beq _0808AE54 adds r0, r4, #0 bl UpdateSprite ldrb r0, [r4, #0x14] cmp r0, #3 bne _0808AE42 ldrb r1, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r1 b _0808AE48 _0808AE42: ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 _0808AE48: strb r0, [r4, #0x18] movs r0, #0x97 lsls r0, r0, #1 bl PlaySFX b _0808AE80 _0808AE54: adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808AE80 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _0808AE80 ldrb r1, [r4, #0x14] adds r1, #0xd adds r0, r4, #0 bl UpdateSprite _0808AE80: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808AE84 sub_0808AE84: @ 0x0808AE84 push {lr} adds r2, r0, #0 ldr r0, _0808AEA8 @ =gLinkState ldrb r0, [r0, #5] cmp r0, #0 bne _0808AE94 movs r0, #6 strb r0, [r2, #0xd] _0808AE94: ldr r0, _0808AEAC @ =gUnk_081211DC ldrb r1, [r2, #0xd] subs r1, #5 lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 pop {pc} .align 2, 0 _0808AEA8: .4byte gLinkState _0808AEAC: .4byte gUnk_081211DC thumb_func_start sub_0808AEB0 sub_0808AEB0: @ 0x0808AEB0 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] cmp r0, #0 beq _0808AF68 ldr r1, [r4, #0x54] adds r0, r4, #0 bl sub_0808B1F0 adds r6, r0, #0 ldr r5, _0808AF10 @ =gLinkState adds r2, r5, #0 adds r2, #0x90 ldr r1, _0808AF14 @ =gUnk_081211E4 ldrb r0, [r4, #0x14] lsls r0, r0, #1 adds r0, r0, r1 ldrh r1, [r2] ldrh r0, [r0] ands r0, r1 cmp r0, #0 beq _0808AF20 adds r0, r4, #0 bl sub_08004274 cmp r6, #0x3f bhi _0808AF08 ldr r0, _0808AF18 @ =gLinkEntity ldrb r2, [r4, #0x15] movs r1, #0x40 bl sub_080044AE ldr r0, [r4, #0x7c] subs r0, #1 str r0, [r4, #0x7c] movs r1, #1 rsbs r1, r1, #0 cmp r0, r1 bne _0808AF08 movs r0, #4 str r0, [r4, #0x7c] ldr r0, _0808AF1C @ =0x0000012F bl PlaySFX _0808AF08: movs r0, #1 strb r0, [r4, #0xf] b _0808AFD0 .align 2, 0 _0808AF10: .4byte gLinkState _0808AF14: .4byte gUnk_081211E4 _0808AF18: .4byte gLinkEntity _0808AF1C: .4byte 0x0000012F _0808AF20: ldrb r0, [r4, #0xf] cmp r0, #0 beq _0808AFD0 ldr r2, _0808AF64 @ =gLinkEntity ldrb r0, [r2, #0xc] cmp r0, #1 bne _0808AFD0 adds r0, r5, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 bne _0808AFD0 movs r0, #0x1b strb r0, [r5, #0xc] adds r0, r5, #0 adds r0, #0x38 strb r6, [r0] ldrb r0, [r4, #0x15] movs r1, #0x10 eors r0, r1 adds r1, r5, #0 adds r1, #0x39 strb r0, [r1] adds r0, r4, #0 adds r1, r2, #0 bl sub_0808B1F0 adds r1, r5, #0 adds r1, #0x3a strb r0, [r1] ldrb r0, [r4, #0xd] adds r0, #1 strb r0, [r4, #0xd] b _0808AFD0 .align 2, 0 _0808AF64: .4byte gLinkEntity _0808AF68: movs r6, #1 strb r6, [r4, #0xe] str r6, [r4, #0x7c] ldr r5, _0808AFC8 @ =gLinkEntity ldrb r0, [r5, #0x14] lsrs r0, r0, #1 movs r1, #2 eors r0, r1 strb r0, [r4, #0x14] lsls r0, r0, #3 strb r0, [r4, #0x15] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r0, [r5, #0x18] movs r1, #0x40 ands r1, r0 ldrb r2, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] ldrb r1, [r4, #0x14] adds r1, #5 adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 movs r1, #0 bl sub_0808B21C cmp r0, #0 beq _0808AFB6 ldr r0, [r4, #0x54] movs r1, #0 bl sub_0808B168 _0808AFB6: ldrb r1, [r4, #0x14] adds r0, r6, #0 ands r0, r1 cmp r0, #0 beq _0808AFCC ldrh r0, [r4, #0x32] strh r0, [r5, #0x32] b _0808AFD0 .align 2, 0 _0808AFC8: .4byte gLinkEntity _0808AFCC: ldrh r0, [r4, #0x2e] strh r0, [r5, #0x2e] _0808AFD0: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0808AFD4 sub_0808AFD4: @ 0x0808AFD4 push {lr} movs r1, #1 strb r1, [r0, #0xc] strb r1, [r0, #0xd] ldr r2, [r0, #0x54] ldrb r0, [r0, #0x15] movs r1, #0x10 eors r0, r1 strb r0, [r2, #0x15] movs r0, #0x98 lsls r0, r0, #1 bl PlaySFX pop {pc} thumb_func_start sub_0808AFF0 sub_0808AFF0: @ 0x0808AFF0 push {r4, r5, lr} adds r4, r0, #0 ldr r1, _0808B054 @ =gUnk_081211EC ldrb r0, [r4, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 ldr r0, _0808B058 @ =gLinkState ldrb r1, [r0, #0x1c] movs r0, #0xf ands r0, r1 cmp r0, #1 bne _0808B01E adds r0, r4, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x13 beq _0808B050 _0808B01E: ldrb r5, [r4, #0xa] cmp r5, #1 bne _0808B050 ldr r0, [r4, #0x50] strb r5, [r0, #0xc] ldr r0, [r4, #0x50] strb r5, [r0, #0xd] ldr r2, [r4, #0x50] ldrb r0, [r2, #0x15] movs r1, #0x10 eors r0, r1 strb r0, [r4, #0x15] ldrb r3, [r2, #0x10] movs r1, #0x7f adds r0, r1, #0 ands r0, r3 strb r0, [r2, #0x10] ldrb r0, [r4, #0x10] ands r1, r0 strb r1, [r4, #0x10] strb r5, [r4, #0xc] movs r0, #0x98 lsls r0, r0, #1 bl PlaySFX _0808B050: pop {r4, r5, pc} .align 2, 0 _0808B054: .4byte gUnk_081211EC _0808B058: .4byte gLinkState thumb_func_start sub_0808B05C sub_0808B05C: @ 0x0808B05C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0 bne _0808B0AE ldr r2, _0808B0B8 @ =gLinkEntity ldrb r0, [r2, #0x14] lsrs r0, r0, #1 movs r1, #2 eors r0, r1 strb r0, [r4, #0x14] lsls r0, r0, #3 strb r0, [r4, #0x15] ldrb r0, [r2, #0x18] movs r1, #0x40 ands r1, r0 ldrb r2, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x14] adds r1, #5 adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 movs r1, #1 bl sub_0808B21C cmp r0, #0 beq _0808B0AE ldr r0, [r4, #0x54] movs r1, #1 bl sub_0808B168 _0808B0AE: ldrb r0, [r4, #0xd] adds r0, #1 strb r0, [r4, #0xd] pop {r4, pc} .align 2, 0 _0808B0B8: .4byte gLinkEntity thumb_func_start sub_0808B0BC sub_0808B0BC: @ 0x0808B0BC push {r4, r5, r6, r7, lr} sub sp, #0x88 adds r5, r0, #0 ldr r1, [r5, #0x50] bl sub_0808B1F0 adds r7, r0, #0 ldrb r0, [r5, #0xa] cmp r0, #0 beq _0808B0D6 cmp r0, #1 beq _0808B0DE b _0808B162 _0808B0D6: adds r0, r5, #0 bl sub_08004274 b _0808B162 _0808B0DE: ldr r6, _0808B148 @ =gLinkEntity ldrb r0, [r6, #0x14] movs r1, #0xe ands r1, r0 ldr r0, _0808B14C @ =gUnk_08126EE4 adds r1, r1, r0 mov r2, sp movs r0, #0 ldrsb r0, [r1, r0] ldrh r3, [r6, #0x2e] adds r0, r0, r3 strh r0, [r2, #0x2e] movs r0, #1 ldrsb r0, [r1, r0] ldrh r1, [r6, #0x32] adds r0, r0, r1 strh r0, [r2, #0x32] mov r0, sp adds r1, r5, #0 movs r2, #7 movs r3, #7 bl sub_0800419C cmp r0, #0 beq _0808B154 ldrb r0, [r6, #0xc] cmp r0, #1 bne _0808B162 ldr r4, _0808B150 @ =gLinkState adds r0, r4, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 bne _0808B162 movs r0, #0x1b strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x38 strb r7, [r0] ldrb r0, [r5, #0x15] movs r1, #0x10 eors r0, r1 adds r1, r4, #0 adds r1, #0x39 strb r0, [r1] ldr r0, [r5, #0x50] adds r1, r6, #0 bl sub_0808B1F0 adds r1, r4, #0 adds r1, #0x3a strb r0, [r1] b _0808B162 .align 2, 0 _0808B148: .4byte gLinkEntity _0808B14C: .4byte gUnk_08126EE4 _0808B150: .4byte gLinkState _0808B154: movs r0, #0x40 strh r0, [r5, #0x24] cmp r7, #0x3f bhi _0808B162 adds r0, r5, #0 bl sub_0806F69C _0808B162: add sp, #0x88 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0808B168 sub_0808B168: @ 0x0808B168 push {r4, r5, lr} adds r3, r0, #0 cmp r1, #0 beq _0808B188 ldrb r0, [r3, #0x14] movs r1, #2 eors r1, r0 lsls r1, r1, #1 ldr r0, _0808B184 @ =gUnk_081211F4 adds r2, r1, r0 adds r1, r2, #1 ldr r4, [r3, #0x50] adds r5, r4, #0 b _0808B1CE .align 2, 0 _0808B184: .4byte gUnk_081211F4 _0808B188: ldrb r1, [r3, #0x14] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808B1B8 ldr r5, _0808B1AC @ =gLinkEntity ldr r4, [r3, #0x50] ldrb r1, [r3, #0x14] lsls r2, r1, #1 ldr r0, _0808B1B0 @ =gUnk_081211FC adds r2, r2, r0 movs r0, #2 eors r1, r0 lsls r1, r1, #1 ldr r0, _0808B1B4 @ =gUnk_081211F5 adds r1, r1, r0 b _0808B1CE .align 2, 0 _0808B1AC: .4byte gLinkEntity _0808B1B0: .4byte gUnk_081211FC _0808B1B4: .4byte gUnk_081211F5 _0808B1B8: ldr r5, [r3, #0x50] ldr r4, _0808B1E4 @ =gLinkEntity movs r0, #2 eors r0, r1 lsls r0, r0, #1 ldr r1, _0808B1E8 @ =gUnk_081211F4 adds r2, r0, r1 ldrb r0, [r3, #0x14] lsls r0, r0, #1 ldr r1, _0808B1EC @ =gUnk_081211FD adds r1, r0, r1 _0808B1CE: movs r0, #0 ldrsb r0, [r2, r0] ldrh r5, [r5, #0x2e] adds r0, r0, r5 strh r0, [r3, #0x2e] movs r0, #0 ldrsb r0, [r1, r0] ldrh r4, [r4, #0x32] adds r0, r0, r4 strh r0, [r3, #0x32] pop {r4, r5, pc} .align 2, 0 _0808B1E4: .4byte gLinkEntity _0808B1E8: .4byte gUnk_081211F4 _0808B1EC: .4byte gUnk_081211FD thumb_func_start sub_0808B1F0 sub_0808B1F0: @ 0x0808B1F0 push {lr} adds r2, r0, #0 adds r3, r1, #0 ldrb r1, [r2, #0x14] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808B20A movs r0, #0x2e ldrsh r1, [r2, r0] movs r2, #0x2e ldrsh r0, [r3, r2] b _0808B212 _0808B20A: movs r0, #0x32 ldrsh r1, [r2, r0] movs r2, #0x32 ldrsh r0, [r3, r2] _0808B212: subs r0, r1, r0 cmp r0, #0 bge _0808B21A rsbs r0, r0, #0 _0808B21A: pop {pc} thumb_func_start sub_0808B21C sub_0808B21C: @ 0x0808B21C push {r4, r5, lr} adds r4, r0, #0 adds r5, r1, #0 adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #8 rsbs r1, r1, #0 ands r1, r0 movs r0, #6 orrs r1, r0 strb r1, [r2] adds r0, r4, #0 movs r1, #0x32 movs r2, #1 movs r3, #0 bl CreateObjectWithParent adds r1, r0, #0 str r1, [r4, #0x54] cmp r1, #0 beq _0808B26E ldrb r0, [r4, #0x14] strb r0, [r1, #0x14] ldr r1, [r4, #0x54] ldrb r0, [r4, #0x15] strb r0, [r1, #0x15] ldr r3, [r4, #0x54] ldrb r0, [r4, #0x18] movs r1, #0x40 ands r1, r0 ldrb r2, [r3, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3, #0x18] ldr r0, [r4, #0x54] str r4, [r0, #0x50] ldr r0, [r4, #0x54] strb r5, [r0, #0xb] _0808B26E: adds r0, r4, #0 movs r1, #0x32 movs r2, #2 movs r3, #0 bl CreateObjectWithParent adds r1, r0, #0 str r1, [r4, #0x50] cmp r1, #0 bne _0808B286 movs r0, #0 b _0808B292 _0808B286: ldrb r0, [r4, #0x14] strb r0, [r1, #0x14] ldr r1, [r4, #0x50] ldr r0, [r4, #0x54] str r0, [r1, #0x54] movs r0, #1 _0808B292: pop {r4, r5, pc} thumb_func_start sub_0808B294 sub_0808B294: @ 0x0808B294 push {lr} ldr r2, _0808B2A8 @ =gUnk_08121300 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808B2A8: .4byte gUnk_08121300 thumb_func_start sub_0808B2AC sub_0808B2AC: @ 0x0808B2AC push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #0 bne _0808B2C4 adds r0, r4, #0 bl sub_0808B41C adds r0, r4, #0 bl sub_0808B3AC b _0808B2CA _0808B2C4: adds r0, r4, #0 bl sub_0808B42C _0808B2CA: pop {r4, pc} thumb_func_start sub_0808B2CC sub_0808B2CC: @ 0x0808B2CC push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #0 bne _0808B2E6 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0808B31C b _0808B2F4 _0808B2E6: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _0808B31C _0808B2F4: movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #3 bl UpdateSprite adds r0, r4, #0 adds r0, #0x72 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x70 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer ldr r0, _0808B320 @ =0x000001A5 bl sub_08004488 _0808B31C: pop {r4, pc} .align 2, 0 _0808B320: .4byte 0x000001A5 thumb_func_start sub_0808B324 sub_0808B324: @ 0x0808B324 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808B340 adds r0, r4, #0 bl sub_0808B42C _0808B340: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808B344 sub_0808B344: @ 0x0808B344 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #0 bne _0808B35E adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _0808B384 b _0808B36C _0808B35E: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0808B384 _0808B36C: movs r0, #4 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #2 bl UpdateSprite adds r0, r4, #0 bl sub_0808B3AC ldr r0, _0808B388 @ =0x000001A5 bl sub_08004488 _0808B384: pop {r4, pc} .align 2, 0 _0808B388: .4byte 0x000001A5 thumb_func_start sub_0808B38C sub_0808B38C: @ 0x0808B38C push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808B3A8 adds r0, r4, #0 bl sub_0808B41C _0808B3A8: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808B3AC sub_0808B3AC: @ 0x0808B3AC push {r4, r5, r6, lr} adds r6, r0, #0 adds r2, r6, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] movs r0, #0x2e ldrsh r1, [r6, r0] ldr r2, _0808B414 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r4, #0x32 ldrsh r0, [r6, r4] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r4, r6, #0 adds r4, #0x70 strh r1, [r4] ldrh r0, [r4] adds r5, r6, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080001DA adds r1, r6, #0 adds r1, #0x72 strh r0, [r1] ldrh r0, [r4] ldrb r1, [r5] bl sub_080002E0 adds r1, r6, #0 adds r1, #0x74 strb r0, [r1] ldr r0, _0808B418 @ =0x0000400B ldrh r1, [r4] ldrb r2, [r5] bl UpdateCollisionLayer pop {r4, r5, r6, pc} .align 2, 0 _0808B414: .4byte gRoomControls _0808B418: .4byte 0x0000400B thumb_func_start sub_0808B41C sub_0808B41C: @ 0x0808B41C push {lr} movs r1, #1 strb r1, [r0, #0xc] movs r1, #0 bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_0808B42C sub_0808B42C: @ 0x0808B42C push {lr} movs r1, #3 strb r1, [r0, #0xc] adds r3, r0, #0 adds r3, #0x29 ldrb r1, [r3] movs r2, #7 orrs r1, r2 strb r1, [r3] movs r1, #1 bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_0808B448 sub_0808B448: @ 0x0808B448 push {lr} adds r2, r0, #0 adds r0, #0x70 ldrb r0, [r0] cmp r0, #0 bne _0808B46C ldr r0, _0808B468 @ =gUnk_08121368 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 b _0808B472 .align 2, 0 _0808B468: .4byte gUnk_08121368 _0808B46C: adds r0, r2, #0 bl sub_0808B73C _0808B472: pop {pc} thumb_func_start sub_0808B474 sub_0808B474: @ 0x0808B474 push {r4, lr} adds r4, r0, #0 movs r1, #0 movs r0, #1 strb r0, [r4, #0xc] strb r1, [r4, #0xf] ldr r1, _0808B4D8 @ =gUnk_08121380 ldrb r0, [r4, #0xa] adds r0, r0, r1 ldrb r1, [r0] movs r0, #0xf ands r1, r0 ldrb r3, [r4, #0x1a] movs r2, #0x10 rsbs r2, r2, #0 adds r0, r2, #0 ands r0, r3 orrs r0, r1 strb r0, [r4, #0x1a] adds r3, r4, #0 adds r3, #0x29 ldrb r1, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r3] ldr r0, _0808B4DC @ =gUnk_080FD168 str r0, [r4, #0x48] ldrb r0, [r4, #0x11] ands r2, r0 movs r0, #3 orrs r2, r0 strb r2, [r4, #0x11] adds r0, r4, #0 movs r1, #0 bl UpdateSprite adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0808B4E0 adds r0, r4, #0 bl sub_0808B830 b _0808B4F8 .align 2, 0 _0808B4D8: .4byte gUnk_08121380 _0808B4DC: .4byte gUnk_080FD168 _0808B4E0: bl sub_08052660 cmp r0, #0 beq _0808B4F8 ldrb r0, [r4, #0xa] bl sub_0807CAEC cmp r0, #0 beq _0808B4F8 adds r0, r4, #0 bl sub_0808B830 _0808B4F8: adds r0, r4, #0 bl sub_0808B7C8 cmp r0, #0 beq _0808B528 movs r2, #4 strb r2, [r4, #0xc] movs r0, #0x60 strb r0, [r4, #0xf] ldr r1, _0808B52C @ =gLinkEntity ldrh r0, [r4, #0x2e] strh r0, [r1, #0x2e] ldrh r0, [r4, #0x32] strh r0, [r1, #0x32] strb r2, [r1, #0x14] movs r0, #0x89 lsls r0, r0, #1 bl sub_08004488 ldrb r1, [r4, #0xf] adds r1, #0x10 adds r0, r4, #0 bl sub_0805E4E0 _0808B528: pop {r4, pc} .align 2, 0 _0808B52C: .4byte gLinkEntity thumb_func_start sub_0808B530 sub_0808B530: @ 0x0808B530 push {r4, lr} adds r4, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0808B562 adds r0, r4, #0 bl sub_0808B830 bl sub_08052660 cmp r0, #0 beq _0808B554 ldrb r0, [r4, #0xa] bl sub_0807CAC8 _0808B554: movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xf] adds r0, #0xd6 bl sub_08004488 _0808B562: pop {r4, pc} thumb_func_start sub_0808B564 sub_0808B564: @ 0x0808B564 push {lr} adds r3, r0, #0 ldrb r0, [r3, #0xf] subs r1, r0, #1 strb r1, [r3, #0xf] lsls r0, r1, #0x18 cmp r0, #0 bne _0808B57A movs r0, #3 strb r0, [r3, #0xc] b _0808B58E _0808B57A: lsls r0, r1, #0x18 lsrs r0, r0, #0x19 movs r1, #1 bics r1, r0 ldrb r2, [r3, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3, #0x18] _0808B58E: pop {pc} thumb_func_start sub_0808B590 sub_0808B590: @ 0x0808B590 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 bl sub_0808B7C8 cmp r0, #0 beq _0808B5E4 ldrb r0, [r4, #0xe] cmp r0, #0 bne _0808B5E6 movs r0, #5 strb r0, [r4, #0xc] movs r0, #0x60 strb r0, [r4, #0xf] bl sub_08077B20 ldr r1, _0808B5DC @ =gLinkEntity ldrh r0, [r4, #0x2e] strh r0, [r1, #0x2e] ldrh r0, [r4, #0x32] strh r0, [r1, #0x32] movs r0, #4 strb r0, [r1, #0x14] ldrb r2, [r1, #0x10] movs r0, #0x7f ands r0, r2 strb r0, [r1, #0x10] ldrb r1, [r4, #0xf] adds r1, #0x10 adds r0, r4, #0 bl sub_0805E4E0 ldr r0, _0808B5E0 @ =0x00000113 bl PlaySFX b _0808B5E6 .align 2, 0 _0808B5DC: .4byte gLinkEntity _0808B5E0: .4byte 0x00000113 _0808B5E4: strb r0, [r4, #0xe] _0808B5E6: pop {r4, pc} thumb_func_start sub_0808B5E8 sub_0808B5E8: @ 0x0808B5E8 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xf] subs r1, r0, #1 strb r1, [r4, #0xf] lsls r0, r1, #0x18 cmp r0, #0 bne _0808B610 movs r0, #3 strb r0, [r4, #0xc] movs r0, #1 strb r0, [r4, #0xe] ldr r1, _0808B60C @ =gLinkEntity movs r0, #4 strb r0, [r1, #0x14] movs r0, #0x10 strb r0, [r1, #0x15] b _0808B67E .align 2, 0 _0808B60C: .4byte gLinkEntity _0808B610: movs r5, #0 movs r0, #0x60 ands r0, r1 cmp r0, #0x20 beq _0808B644 cmp r0, #0x20 bgt _0808B624 cmp r0, #0 beq _0808B64E b _0808B66E _0808B624: cmp r0, #0x40 bne _0808B66E lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x58 bne _0808B638 movs r0, #0x8a lsls r0, r0, #1 bl PlaySFX _0808B638: ldrb r1, [r4, #0xf] movs r0, #1 ands r0, r1 cmp r0, #0 bne _0808B66E b _0808B672 _0808B644: movs r0, #3 ands r1, r0 cmp r1, #0 bne _0808B66E b _0808B672 _0808B64E: movs r0, #7 ands r0, r1 cmp r0, #0 bne _0808B66E ldr r0, _0808B668 @ =gLinkEntity ldrb r0, [r0, #0x14] cmp r0, #4 bne _0808B66C lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x18 bls _0808B66E b _0808B672 .align 2, 0 _0808B668: .4byte gLinkEntity _0808B66C: movs r5, #1 _0808B66E: cmp r5, #0 beq _0808B67E _0808B672: ldr r0, _0808B680 @ =gLinkEntity ldrb r1, [r0, #0x14] adds r1, #2 movs r2, #6 ands r1, r2 strb r1, [r0, #0x14] _0808B67E: pop {r4, r5, pc} .align 2, 0 _0808B680: .4byte gLinkEntity thumb_func_start sub_0808B684 sub_0808B684: @ 0x0808B684 push {lr} mov ip, r0 ldrb r0, [r0, #0xf] subs r1, r0, #1 mov r0, ip strb r1, [r0, #0xf] lsls r0, r1, #0x18 lsrs r2, r0, #0x18 cmp r2, #0 bne _0808B6E8 ldr r3, _0808B6E4 @ =gUnk_030010A0 movs r0, #1 strb r0, [r3, #8] strb r2, [r3, #9] mov r0, ip adds r0, #0x7c ldrb r0, [r0] strb r0, [r3, #0xc] mov r0, ip adds r0, #0x7d ldrb r0, [r0] strb r0, [r3, #0xd] mov r0, ip adds r0, #0x84 ldrh r1, [r0] movs r0, #0x3f ands r0, r1 lsls r0, r0, #4 adds r0, #8 movs r2, #0 strh r0, [r3, #0x10] movs r0, #0xfc lsls r0, r0, #4 ands r0, r1 lsrs r0, r0, #2 adds r0, #8 strh r0, [r3, #0x12] strb r2, [r3, #0x14] movs r0, #4 strb r0, [r3, #0xe] strb r2, [r3, #0xf] mov r1, ip ldrb r0, [r1, #0xa] cmp r0, #2 bne _0808B736 strb r0, [r3, #9] b _0808B736 .align 2, 0 _0808B6E4: .4byte gUnk_030010A0 _0808B6E8: movs r0, #0x60 ands r0, r1 cmp r0, #0x20 beq _0808B702 cmp r0, #0x20 bgt _0808B6FA cmp r0, #0 beq _0808B706 b _0808B724 _0808B6FA: cmp r0, #0x40 bne _0808B724 movs r0, #7 b _0808B710 _0808B702: movs r0, #3 b _0808B710 _0808B706: lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x10 bls _0808B718 movs r0, #1 _0808B710: ands r1, r0 cmp r1, #0 bne _0808B724 b _0808B72A _0808B718: ldr r2, _0808B738 @ =gLinkEntity ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2, #0x18] _0808B724: movs r0, #0 cmp r0, #0 beq _0808B736 _0808B72A: ldr r0, _0808B738 @ =gLinkEntity ldrb r1, [r0, #0x14] adds r1, #2 movs r2, #6 ands r1, r2 strb r1, [r0, #0x14] _0808B736: pop {pc} .align 2, 0 _0808B738: .4byte gLinkEntity thumb_func_start sub_0808B73C sub_0808B73C: @ 0x0808B73C push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0808B766 movs r0, #1 strb r0, [r4, #0xc] ldr r0, [r4, #0x50] ldrb r1, [r0, #0x1a] lsls r1, r1, #0x1c lsrs r1, r1, #0x1c ldrb r2, [r4, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x1a] adds r0, r4, #0 movs r1, #1 bl UpdateSprite _0808B766: ldr r5, _0808B78C @ =gLinkEntity movs r0, #0x2e ldrsh r1, [r5, r0] movs r0, #0x32 ldrsh r2, [r5, r0] adds r0, r4, #0 movs r3, #0x28 bl sub_0806FCB8 cmp r0, #0 beq _0808B790 ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #1 orrs r1, r0 strb r1, [r4, #0x18] b _0808B7C0 .align 2, 0 _0808B78C: .4byte gLinkEntity _0808B790: movs r0, #0x2e ldrsh r1, [r5, r0] movs r0, #0x32 ldrsh r2, [r5, r0] adds r0, r4, #0 movs r3, #0x2e bl sub_0806FCB8 cmp r0, #0 beq _0808B7B6 ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 b _0808B7BE _0808B7B6: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 _0808B7BE: strb r0, [r4, #0x18] _0808B7C0: adds r0, r4, #0 bl sub_08004274 pop {r4, r5, pc} thumb_func_start sub_0808B7C8 sub_0808B7C8: @ 0x0808B7C8 push {r4, r5, lr} adds r5, r0, #0 ldr r2, _0808B824 @ =gLinkState ldr r0, [r2, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _0808B82C adds r0, r2, #0 adds r0, #0xa8 ldrb r0, [r0] cmp r0, #0x12 beq _0808B82C ldr r4, _0808B828 @ =gLinkEntity adds r0, r4, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 beq _0808B82C bl sub_08079F8C cmp r0, #0 beq _0808B82C adds r0, r5, #0 adds r1, r4, #0 movs r2, #5 movs r3, #5 bl sub_080041A0 cmp r0, #0 beq _0808B82C movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _0808B82C ldrb r0, [r5, #0xe] cmp r0, #0 bne _0808B81E ldrb r0, [r4, #0xc] cmp r0, #0x1b bne _0808B81E bl sub_080791D0 _0808B81E: movs r0, #1 b _0808B82E .align 2, 0 _0808B824: .4byte gLinkState _0808B828: .4byte gLinkEntity _0808B82C: movs r0, #0 _0808B82E: pop {r4, r5, pc} thumb_func_start sub_0808B830 sub_0808B830: @ 0x0808B830 push {r4, lr} adds r4, r0, #0 movs r1, #0 movs r0, #3 strb r0, [r4, #0xc] strb r1, [r4, #0xe] ldrb r1, [r4, #0x18] subs r0, #7 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #0x34 movs r1, #0 movs r2, #0 bl CreateObject adds r2, r0, #0 cmp r2, #0 beq _0808B86A adds r1, r2, #0 adds r1, #0x70 movs r0, #1 strb r0, [r1] str r4, [r2, #0x50] adds r0, r4, #0 adds r1, r2, #0 bl CopyPosition _0808B86A: pop {r4, pc} thumb_func_start sub_0808B86C sub_0808B86C: @ 0x0808B86C push {lr} ldr r2, _0808B880 @ =gUnk_081213C4 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808B880: .4byte gUnk_081213C4 thumb_func_start sub_0808B884 sub_0808B884: @ 0x0808B884 push {lr} ldr r2, _0808B898 @ =gUnk_081213D0 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808B898: .4byte gUnk_081213D0 thumb_func_start sub_0808B89C sub_0808B89C: @ 0x0808B89C push {r4, lr} adds r4, r0, #0 movs r0, #2 strb r0, [r4, #0xc] strb r0, [r4, #0xb] adds r1, r4, #0 adds r1, #0x38 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r2] movs r0, #0xb4 strb r0, [r4, #0xe] ldrb r1, [r4, #0xb] adds r0, r4, #0 bl UpdateSprite pop {r4, pc} .align 2, 0 thumb_func_start sub_0808B8D4 sub_0808B8D4: @ 0x0808B8D4 push {r4, lr} adds r4, r0, #0 bl sub_08004274 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808B904 movs r0, #0xb4 strb r0, [r4, #0xe] ldrb r0, [r4, #0xb] adds r0, #1 strb r0, [r4, #0xb] ldrb r0, [r4, #0xb] movs r1, #3 bl __modsi3 strb r0, [r4, #0xb] ldrb r1, [r4, #0xb] adds r0, r4, #0 bl UpdateSprite _0808B904: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808B908 sub_0808B908: @ 0x0808B908 push {lr} bl sub_08004274 pop {pc} thumb_func_start sub_0808B910 sub_0808B910: @ 0x0808B910 push {lr} ldr r2, _0808B92C @ =gUnk_081213DC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 ldr r2, _0808B930 @ =gLinkState ldrb r1, [r2, #0x1a] movs r0, #0x80 orrs r0, r1 strb r0, [r2, #0x1a] pop {pc} .align 2, 0 _0808B92C: .4byte gUnk_081213DC _0808B930: .4byte gLinkState thumb_func_start sub_0808B934 sub_0808B934: @ 0x0808B934 push {r4, r5, r6, r7, lr} adds r4, r0, #0 movs r7, #0 movs r0, #0xc0 lsls r0, r0, #2 strh r0, [r4, #0x24] strb r7, [r4, #0x1e] ldrh r1, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x70 strh r1, [r0] ldrh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r2] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _0808B9B8 @ =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 r6, r4, #0 adds r6, #0x38 ldrb r1, [r6] bl sub_080001DA adds r1, r4, #0 adds r1, #0x74 strh r0, [r1] ldrb r0, [r4, #0xe] cmp r0, #0 bne _0808B9C0 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x78 strb r0, [r4, #0xf] ldr r0, _0808B9BC @ =0x00004022 ldrh r1, [r5] ldrb r2, [r6] bl UpdateCollisionLayer b _0808B9D2 .align 2, 0 _0808B9B8: .4byte gRoomControls _0808B9BC: .4byte 0x00004022 _0808B9C0: movs r0, #3 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #7 ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x18] strb r7, [r4, #0xe] _0808B9D2: pop {r4, r5, r6, r7, pc} thumb_func_start sub_0808B9D4 sub_0808B9D4: @ 0x0808B9D4 push {r4, lr} adds r4, r0, #0 movs r0, #0 bl sub_0807CC3C cmp r0, #0 beq _0808BA0A movs r1, #0 movs r0, #2 strb r0, [r4, #0xc] movs r0, #7 strb r0, [r4, #0xe] strb r1, [r4, #0x15] adds r0, r4, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x76 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer ldr r0, _0808BA0C @ =0x0000010B bl sub_08004488 _0808BA0A: pop {r4, pc} .align 2, 0 _0808BA0C: .4byte 0x0000010B thumb_func_start sub_0808BA10 sub_0808BA10: @ 0x0808BA10 push {r4, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808BA44 movs r0, #5 strb r0, [r4, #0xc] movs r0, #8 strb r0, [r4, #0xe] ldrb r1, [r4, #0x18] subs r0, #0xc ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x70 ldrh r0, [r0] strh r0, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x72 ldrh r0, [r0] strh r0, [r4, #0x32] _0808BA44: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808BA48 sub_0808BA48: @ 0x0808BA48 push {r4, lr} adds r4, r0, #0 movs r1, #2 bl sub_08083734 cmp r0, #0 beq _0808BA68 movs r0, #4 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x76 ldrh r2, [r0] adds r0, r4, #0 movs r1, #2 bl sub_080836DC _0808BA68: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808BA6C sub_0808BA6C: @ 0x0808BA6C push {r4, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808BAA4 movs r0, #5 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #2 bl sub_08083814 ldr r0, _0808BAA8 @ =0x0000010B bl sub_08004488 ldr r0, _0808BAAC @ =0x00004022 adds r1, r4, #0 adds r1, #0x76 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer _0808BAA4: pop {r4, pc} .align 2, 0 _0808BAA8: .4byte 0x0000010B _0808BAAC: .4byte 0x00004022 thumb_func_start nullsub_520 nullsub_520: @ 0x0808BAB0 bx lr .align 2, 0 thumb_func_start sub_0808BAB4 sub_0808BAB4: @ 0x0808BAB4 push {lr} ldr r2, _0808BAC8 @ =gUnk_081213F4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808BAC8: .4byte gUnk_081213F4 thumb_func_start sub_0808BACC sub_0808BACC: @ 0x0808BACC push {r4, lr} adds r2, r0, #0 movs r4, #1 strb r4, [r2, #0xc] movs r3, #0x10 strb r3, [r2, #0xe] ldrh r0, [r2, #0x36] subs r0, #0x10 strh r0, [r2, #0x36] ldrb r0, [r2, #0xb] cmp r0, #0 bne _0808BAEA movs r0, #2 strb r0, [r2, #0x1e] b _0808BAFC _0808BAEA: movs r0, #0 strb r0, [r2, #0x1e] ldr r0, [r2, #0x50] ldrh r1, [r0, #0x2e] adds r0, r3, #0 ands r0, r1 cmp r0, #0 beq _0808BAFC strb r4, [r2, #0x1e] _0808BAFC: adds r0, r2, #0 bl sub_080A29BC pop {r4, pc} thumb_func_start sub_0808BB04 sub_0808BB04: @ 0x0808BB04 push {lr} ldrb r1, [r0, #0xe] subs r1, #1 strb r1, [r0, #0xe] lsls r1, r1, #0x18 cmp r1, #0 bne _0808BB16 bl sub_0805E780 _0808BB16: pop {pc} thumb_func_start sub_0808BB18 sub_0808BB18: @ 0x0808BB18 push {lr} ldr r2, _0808BB2C @ =gUnk_08121440 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808BB2C: .4byte gUnk_08121440 thumb_func_start sub_0808BB30 sub_0808BB30: @ 0x0808BB30 push {r4, lr} adds r4, r0, #0 movs r0, #0x17 bl GetProgressFlag adds r1, r0, #0 cmp r1, #0 beq _0808BB4C movs r0, #0x4a bl sub_0801D7EC bl sub_0805E780 b _0808BBD4 _0808BB4C: movs r3, #1 strb r3, [r4, #0xc] ldrb r0, [r4, #0x10] movs r2, #0x80 orrs r0, r2 strb r0, [r4, #0x10] movs r0, #0x78 strb r0, [r4, #0xe] strb r1, [r4, #0xf] ldrb r0, [r4, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] movs r0, #0x29 adds r0, r0, r4 mov ip, r0 ldrb r1, [r0] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 mov r1, ip strb r0, [r1] ldrb r1, [r4, #0x1b] movs r0, #0x3f ands r0, r1 orrs r0, r2 strb r0, [r4, #0x1b] movs r0, #0xc0 lsls r0, r0, #2 strh r0, [r4, #0x24] adds r0, r4, #0 adds r0, #0x3f strb r3, [r0] adds r1, r4, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #4 movs r0, #0x48 strb r0, [r1] subs r1, #5 movs r0, #4 strb r0, [r1] ldr r0, _0808BBD8 @ =gUnk_080FD150 str r0, [r4, #0x48] movs r0, #2 strb r0, [r4, #0x1e] ldr r0, _0808BBDC @ =gLinkEntity adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] adds r0, r4, #0 bl sub_0808BDB0 ldr r0, [r4, #0x50] ldr r1, [r0, #0x20] movs r2, #0xb8 lsls r2, r2, #1 adds r0, r2, #0 subs r0, r0, r1 strh r0, [r4, #0x32] adds r0, r4, #0 bl sub_0808BBE0 _0808BBD4: pop {r4, pc} .align 2, 0 _0808BBD8: .4byte gUnk_080FD150 _0808BBDC: .4byte gLinkEntity thumb_func_start sub_0808BBE0 sub_0808BBE0: @ 0x0808BBE0 push {lr} adds r3, r0, #0 movs r1, #0x32 ldrsh r0, [r3, r1] ldr r1, _0808BC20 @ =gRoomControls movs r2, #0xc ldrsh r1, [r1, r2] subs r1, r0, r1 cmp r1, #0x9f bhi _0808BC2C adds r0, r1, #0 cmp r1, #0 bge _0808BBFC adds r0, #0xf _0808BBFC: asrs r1, r0, #4 ldr r0, _0808BC24 @ =gUnk_08121474 adds r0, r1, r0 ldrb r0, [r0] adds r2, r3, #0 adds r2, #0x63 strb r0, [r2] lsls r0, r1, #2 ldr r1, _0808BC28 @ =gUnk_0812144C adds r0, r0, r1 ldrh r1, [r0] ldrh r2, [r0, #2] adds r0, r3, #0 movs r3, #0 bl sub_0805EC9C b _0808BC38 .align 2, 0 _0808BC20: .4byte gRoomControls _0808BC24: .4byte gUnk_08121474 _0808BC28: .4byte gUnk_0812144C _0808BC2C: adds r2, r3, #0 adds r2, #0x41 ldrb r1, [r2] movs r0, #0x7f ands r0, r1 strb r0, [r2] _0808BC38: pop {pc} .align 2, 0 thumb_func_start sub_0808BC3C sub_0808BC3C: @ 0x0808BC3C push {r4, r5, r6, lr} adds r5, r0, #0 ldr r2, _0808BC98 @ =gRoomControls ldrh r0, [r2, #6] adds r0, #0x78 movs r4, #0 strh r0, [r5, #0x2e] ldr r0, [r5, #0x50] ldr r1, [r0, #0x20] ldr r0, _0808BC9C @ =0xFFFFFE90 adds r1, r1, r0 ldrh r0, [r2, #8] subs r0, r0, r1 strh r0, [r5, #0x32] adds r0, r5, #0 bl sub_0808BBE0 adds r0, r5, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x93 bne _0808BCE4 ldrb r0, [r5, #0xe] subs r2, r0, #1 strb r2, [r5, #0xe] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] lsls r0, r2, #0x18 cmp r0, #0 bne _0808BCA0 movs r0, #0x17 bl sub_0807CD04 movs r0, #2 strb r0, [r5, #0xc] movs r0, #0x80 strb r0, [r5, #0xf] adds r0, r5, #0 adds r0, #0x63 strb r4, [r0] b _0808BCFE .align 2, 0 _0808BC98: .4byte gRoomControls _0808BC9C: .4byte 0xFFFFFE90 _0808BCA0: movs r6, #1 ands r2, r6 cmp r2, #0 beq _0808BCCA bl Random movs r4, #3 ands r0, r4 ldr r1, _0808BCDC @ =0x0000FFFE adds r0, r0, r1 ldrh r1, [r5, #0x2e] adds r0, r0, r1 strh r0, [r5, #0x2e] bl Random ands r0, r4 ldr r1, _0808BCE0 @ =0x0000FFFF adds r0, r0, r1 ldrh r1, [r5, #0x32] adds r0, r0, r1 strh r0, [r5, #0x32] _0808BCCA: ldrb r0, [r5, #0xf] cmp r0, #1 beq _0808BCFE strb r6, [r5, #0xf] movs r0, #0x4a bl sub_0801D7EC b _0808BCFE .align 2, 0 _0808BCDC: .4byte 0x0000FFFE _0808BCE0: .4byte 0x0000FFFF _0808BCE4: movs r0, #0x78 strb r0, [r5, #0xe] ldrb r1, [r5, #0x18] subs r0, #0x7c ands r0, r1 strb r0, [r5, #0x18] ldrb r0, [r5, #0xf] cmp r0, #0 beq _0808BCFE strb r4, [r5, #0xf] movs r0, #0x49 bl sub_0801D7EC _0808BCFE: pop {r4, r5, r6, pc} thumb_func_start sub_0808BD00 sub_0808BD00: @ 0x0808BD00 push {lr} movs r0, #0x17 bl sub_0807CD04 movs r0, #0x72 bl PlaySFX bl sub_0805E780 pop {pc} thumb_func_start sub_0808BD14 sub_0808BD14: @ 0x0808BD14 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xf] cmp r0, #0 beq _0808BD34 subs r0, #8 strb r0, [r5, #0xf] ldrb r0, [r5, #0xf] movs r2, #0x80 lsls r2, r2, #2 subs r2, r2, r0 adds r0, r5, #0 adds r1, r2, #0 movs r3, #0 bl sub_0805EC9C _0808BD34: adds r0, r5, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x93 bne _0808BD74 ldr r4, _0808BD70 @ =gLinkEntity adds r0, r5, #0 adds r1, r4, #0 bl sub_080045C4 strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_0806F69C movs r0, #0x2e ldrsh r1, [r4, r0] movs r0, #0x32 ldrsh r2, [r4, r0] subs r2, #6 adds r0, r5, #0 movs r3, #0x1c bl sub_0806FCB8 cmp r0, #0 beq _0808BDAE adds r0, r5, #0 bl sub_0808BD00 b _0808BDAE .align 2, 0 _0808BD70: .4byte gLinkEntity _0808BD74: ldrb r1, [r5, #0x10] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808BD8A movs r0, #0x7f ands r0, r1 strb r0, [r5, #0x10] movs r0, #0x1e strb r0, [r5, #0xe] b _0808BDAE _0808BD8A: ldrb r2, [r5, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r5, #0x18] ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808BDAE adds r0, r5, #0 bl sub_0808BD00 _0808BDAE: pop {r4, r5, pc} thumb_func_start sub_0808BDB0 sub_0808BDB0: @ 0x0808BDB0 push {r4, r5, r6, lr} adds r3, r0, #0 ldr r4, _0808BDD4 @ =gUnk_03003DA0 ldr r2, [r4, #4] movs r0, #0 str r0, [r3, #0x50] cmp r2, r4 beq _0808BDE6 ldr r6, _0808BDD8 @ =0x0000FFFF ldr r5, _0808BDDC @ =0x00000C09 _0808BDC4: ldrh r1, [r2, #8] adds r0, r6, #0 ands r0, r1 cmp r0, r5 bne _0808BDE0 str r2, [r3, #0x50] b _0808BDE6 .align 2, 0 _0808BDD4: .4byte gUnk_03003DA0 _0808BDD8: .4byte 0x0000FFFF _0808BDDC: .4byte 0x00000C09 _0808BDE0: ldr r2, [r2, #4] cmp r2, r4 bne _0808BDC4 _0808BDE6: pop {r4, r5, r6, pc} thumb_func_start sub_0808BDE8 sub_0808BDE8: @ 0x0808BDE8 push {lr} ldr r2, _0808BDFC @ =gUnk_08121480 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808BDFC: .4byte gUnk_08121480 thumb_func_start sub_0808BE00 sub_0808BE00: @ 0x0808BE00 push {r4, r5, lr} adds r5, r0, #0 adds r0, #0x38 ldrb r0, [r0] bl sub_0808094C adds r4, r0, #0 adds r0, r5, #0 bl sub_0806F798 lsls r0, r0, #1 adds r0, #4 adds r4, r4, r0 str r4, [r5, #0x78] ldrh r1, [r4] adds r0, r5, #0 adds r0, #0x70 strh r1, [r0] movs r0, #1 strb r0, [r5, #0xc] pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0808BE2C sub_0808BE2C: @ 0x0808BE2C push {r4, lr} adds r2, r0, #0 ldr r0, _0808BE78 @ =gUnk_02002A40 ldr r1, _0808BE7C @ =0x0000024E adds r4, r0, r1 ldrb r0, [r4] cmp r0, #0 beq _0808BE74 adds r0, r2, #0 adds r0, #0x70 ldr r1, [r2, #0x78] ldrh r0, [r0] ldrh r1, [r1] cmp r0, r1 beq _0808BE74 adds r0, r2, #0 movs r1, #0x58 movs r2, #0 bl sub_080A2A20 adds r1, r0, #0 cmp r1, #0 beq _0808BE6C ldr r0, _0808BE80 @ =gLinkEntity ldrb r0, [r0, #0x14] lsls r0, r0, #2 strb r0, [r1, #0x15] movs r0, #0x80 strh r0, [r1, #0x24] movs r0, #0x80 lsls r0, r0, #0xa str r0, [r1, #0x20] _0808BE6C: movs r0, #1 strb r0, [r4] bl sub_0805E780 _0808BE74: pop {r4, pc} .align 2, 0 _0808BE78: .4byte gUnk_02002A40 _0808BE7C: .4byte 0x0000024E _0808BE80: .4byte gLinkEntity thumb_func_start sub_0808BE84 sub_0808BE84: @ 0x0808BE84 push {lr} ldr r2, _0808BE98 @ =gUnk_08121488 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808BE98: .4byte gUnk_08121488 thumb_func_start sub_0808BE9C sub_0808BE9C: @ 0x0808BE9C push {r4, r5, lr} adds r4, r0, #0 ldrb r1, [r4, #0x10] movs r0, #0x80 movs r2, #0 orrs r0, r1 strb r0, [r4, #0x10] adds r0, r4, #0 adds r0, #0x3f movs r5, #1 strb r5, [r0] adds r1, r4, #0 adds r1, #0x3c movs r0, #0x47 strb r0, [r1] adds r1, #4 movs r0, #0x44 strb r0, [r1] subs r1, #5 movs r0, #0x80 strb r0, [r1] adds r0, r4, #0 adds r0, #0x68 strb r2, [r0] ldrb r0, [r4, #0xa] bl sub_0807CBD0 cmp r0, #0 beq _0808BEEE adds r0, r4, #0 adds r0, #0x7c ldrb r0, [r0] cmp r0, #0 bne _0808BEF8 movs r0, #3 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #1 bl LoadAnimation b _0808BF10 _0808BEEE: adds r0, r4, #0 adds r0, #0x7c ldrb r0, [r0] cmp r0, #0 bne _0808BF04 _0808BEF8: strb r5, [r4, #0xc] adds r0, r4, #0 movs r1, #0 bl LoadAnimation b _0808BF10 _0808BF04: movs r0, #3 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #1 bl LoadAnimation _0808BF10: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0808BF14 sub_0808BF14: @ 0x0808BF14 push {r4, lr} adds r4, r0, #0 bl sub_0808C128 cmp r0, #0 beq _0808BF4C ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0808C13C adds r0, r4, #0 adds r0, #0x7c ldrb r0, [r0] cmp r0, #0 bne _0808BF3E ldrb r0, [r4, #0xa] bl sub_0807CCB4 b _0808BF44 _0808BF3E: ldrb r0, [r4, #0xa] bl sub_0807CD34 _0808BF44: adds r0, r4, #0 movs r1, #0 bl sub_0808C148 _0808BF4C: adds r0, r4, #0 movs r1, #0 bl sub_0808C01C pop {r4, pc} .align 2, 0 thumb_func_start sub_0808BF58 sub_0808BF58: @ 0x0808BF58 push {r4, lr} adds r4, r0, #0 movs r1, #0x80 lsls r1, r1, #6 bl sub_08003FC4 ldrb r0, [r4, #0xd] cmp r0, #1 beq _0808BF94 cmp r0, #1 bgt _0808BF74 cmp r0, #0 beq _0808BF7A b _0808BFD6 _0808BF74: cmp r0, #2 beq _0808BFB0 b _0808BFD6 _0808BF7A: ldr r1, [r4, #0x20] ldr r0, _0808BF90 @ =0x00017FFF cmp r1, r0 bgt _0808BFD6 movs r0, #1 strb r0, [r4, #0xd] adds r0, r4, #0 movs r1, #2 bl LoadAnimation b _0808BFD6 .align 2, 0 _0808BF90: .4byte 0x00017FFF _0808BF94: adds r0, r4, #0 bl sub_080042B8 movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _0808BFD6 ldrb r0, [r4, #0xd] adds r0, #1 strb r0, [r4, #0xd] movs r0, #0x80 lsls r0, r0, #8 str r0, [r4, #0x20] b _0808BFD6 _0808BFB0: adds r0, r4, #0 bl sub_080042B8 movs r0, #0x36 ldrsh r1, [r4, r0] cmp r1, #0 bne _0808BFD6 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] strb r1, [r4, #0xf] adds r0, r4, #0 movs r1, #1 bl LoadAnimation adds r0, r4, #0 movs r1, #1 bl sub_0808C148 _0808BFD6: pop {r4, pc} thumb_func_start sub_0808BFD8 sub_0808BFD8: @ 0x0808BFD8 push {r4, lr} adds r4, r0, #0 bl sub_0808C128 cmp r0, #0 beq _0808C010 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0808C13C adds r0, r4, #0 adds r0, #0x7c ldrb r0, [r0] cmp r0, #0 bne _0808C002 ldrb r0, [r4, #0xa] bl sub_0807CD34 b _0808C008 _0808C002: ldrb r0, [r4, #0xa] bl sub_0807CCB4 _0808C008: adds r0, r4, #0 movs r1, #0 bl sub_0808C148 _0808C010: adds r0, r4, #0 movs r1, #1 bl sub_0808C01C pop {r4, pc} .align 2, 0 thumb_func_start sub_0808C01C sub_0808C01C: @ 0x0808C01C push {r4, r5, r6, lr} adds r4, r0, #0 adds r5, r1, #0 movs r1, #0x2e ldrsh r0, [r4, r1] subs r0, #0x18 movs r2, #0x32 ldrsh r1, [r4, r2] subs r1, #0x18 movs r2, #0x30 movs r3, #0x30 bl sub_0806FBFC cmp r0, #0 beq _0808C0A6 ldr r2, _0808C06C @ =gUnk_02033A90 ldrh r0, [r4, #0x2e] strh r0, [r2, #0x12] ldrh r0, [r4, #0x32] strh r0, [r2, #0x14] movs r6, #2 strb r6, [r2, #0x16] movs r0, #4 cmp r5, #0 beq _0808C050 movs r0, #2 _0808C050: strb r0, [r2, #0x17] cmp r5, #1 bne _0808C0A6 ldr r3, _0808C070 @ =gLinkState ldr r0, [r3, #0x30] movs r1, #0x20 ands r0, r1 cmp r0, #0 beq _0808C074 ldrb r0, [r3, #2] cmp r0, #0 bne _0808C074 strb r6, [r2, #0x18] b _0808C082 .align 2, 0 _0808C06C: .4byte gUnk_02033A90 _0808C070: .4byte gLinkState _0808C074: bl sub_08057810 cmp r0, #0 beq _0808C082 ldr r1, _0808C0A8 @ =gUnk_02033A90 movs r0, #3 strb r0, [r1, #0x18] _0808C082: movs r1, #0x2e ldrsh r0, [r4, r1] movs r2, #0x32 ldrsh r1, [r4, r2] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl sub_080577AC ldrb r0, [r4, #0xf] cmp r0, #0 bne _0808C0A6 movs r0, #1 strb r0, [r4, #0xf] movs r0, #0xa9 lsls r0, r0, #1 bl PlaySFX _0808C0A6: pop {r4, r5, r6, pc} .align 2, 0 _0808C0A8: .4byte gUnk_02033A90 thumb_func_start sub_0808C0AC sub_0808C0AC: @ 0x0808C0AC push {r4, lr} adds r4, r0, #0 movs r1, #0x80 lsls r1, r1, #6 bl sub_08003FC4 ldrb r0, [r4, #0xd] cmp r0, #1 beq _0808C0E8 cmp r0, #1 bgt _0808C0C8 cmp r0, #0 beq _0808C0CE b _0808C126 _0808C0C8: cmp r0, #2 beq _0808C104 b _0808C126 _0808C0CE: ldr r1, [r4, #0x20] ldr r0, _0808C0E4 @ =0x00017FFF cmp r1, r0 bgt _0808C126 movs r0, #1 strb r0, [r4, #0xd] adds r0, r4, #0 movs r1, #3 bl LoadAnimation b _0808C126 .align 2, 0 _0808C0E4: .4byte 0x00017FFF _0808C0E8: adds r0, r4, #0 bl sub_080042B8 movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _0808C126 ldrb r0, [r4, #0xd] adds r0, #1 strb r0, [r4, #0xd] movs r0, #0x80 lsls r0, r0, #8 str r0, [r4, #0x20] b _0808C126 _0808C104: adds r0, r4, #0 bl sub_080042B8 movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _0808C126 movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #0 bl LoadAnimation adds r0, r4, #0 movs r1, #1 bl sub_0808C148 _0808C126: pop {r4, pc} thumb_func_start sub_0808C128 sub_0808C128: @ 0x0808C128 push {lr} movs r1, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x9d bne _0808C136 movs r1, #1 _0808C136: adds r0, r1, #0 pop {pc} .align 2, 0 thumb_func_start sub_0808C13C sub_0808C13C: @ 0x0808C13C movs r1, #0 strb r1, [r0, #0xd] movs r1, #0xa0 lsls r1, r1, #0xa str r1, [r0, #0x20] bx lr thumb_func_start sub_0808C148 sub_0808C148: @ 0x0808C148 push {r4, r5, r6, lr} adds r6, r0, #0 movs r2, #0x2e ldrsh r0, [r6, r2] ldr r4, _0808C1A4 @ =gRoomControls ldrh r2, [r4, #6] subs r0, r0, r2 asrs r5, r0, #4 movs r3, #0x3f ands r5, r3 movs r2, #0x32 ldrsh r0, [r6, r2] ldrh r2, [r4, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r5, r0 cmp r1, #0 bne _0808C1B8 ldr r0, _0808C1A8 @ =0x00004092 subs r1, r5, #1 adds r4, r6, #0 adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _0808C1AC @ =0x00004093 ldrb r2, [r4] adds r1, r5, #0 bl UpdateCollisionLayer ldr r0, _0808C1B0 @ =0x00004094 adds r1, r5, #0 adds r1, #0x3f ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _0808C1B4 @ =0x00004095 adds r1, r5, #0 adds r1, #0x40 ldrb r2, [r4] bl UpdateCollisionLayer b _0808C1E0 .align 2, 0 _0808C1A4: .4byte gRoomControls _0808C1A8: .4byte 0x00004092 _0808C1AC: .4byte 0x00004093 _0808C1B0: .4byte 0x00004094 _0808C1B4: .4byte 0x00004095 _0808C1B8: subs r0, r5, #1 adds r4, r6, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_0807BA8C ldrb r1, [r4] adds r0, r5, #0 bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x3f ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x40 ldrb r1, [r4] bl sub_0807BA8C _0808C1E0: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0808C1E4 sub_0808C1E4: @ 0x0808C1E4 push {lr} ldr r2, _0808C1F8 @ =gUnk_081214D8 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808C1F8: .4byte gUnk_081214D8 thumb_func_start sub_0808C1FC sub_0808C1FC: @ 0x0808C1FC push {r4, r5, r6, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x84 ldrh r1, [r2] ldr r0, _0808C2B0 @ =0x0000FFFF cmp r1, r0 beq _0808C21A adds r0, r1, #0 bl sub_0807CBE4 cmp r0, #0 beq _0808C21A bl sub_0805E780 _0808C21A: adds r1, r4, #0 adds r1, #0x86 ldrh r0, [r1] cmp r0, #0 beq _0808C230 bl sub_0807CBE4 cmp r0, #0 beq _0808C230 bl sub_0805E780 _0808C230: ldrb r0, [r4, #0xa] lsrs r0, r0, #2 strb r0, [r4, #0xb] movs r0, #0xc0 lsls r0, r0, #2 strh r0, [r4, #0x24] ldrh r1, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x70 strh r1, [r0] ldrh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] ldr r0, _0808C2B4 @ =gUnk_080FD180 str r0, [r4, #0x48] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r2] ldrb r1, [r4, #0xa] movs r0, #3 ands r0, r1 adds r5, r4, #0 adds r5, #0x76 strh r0, [r5] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _0808C2B8 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r6, #0x32 ldrsh r0, [r4, r6] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r0, r4, #0 adds r0, #0x74 strh r1, [r0] ldrb r0, [r4, #0xa] movs r1, #0x1f ands r1, r0 adds r0, r4, #0 bl UpdateSprite ldrb r0, [r4, #0xb] cmp r0, #1 beq _0808C2F8 cmp r0, #1 bgt _0808C2BC cmp r0, #0 beq _0808C2C2 b _0808C31C .align 2, 0 _0808C2B0: .4byte 0x0000FFFF _0808C2B4: .4byte gUnk_080FD180 _0808C2B8: .4byte gRoomControls _0808C2BC: cmp r0, #2 beq _0808C306 b _0808C31C _0808C2C2: movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] adds r0, r4, #0 bl sub_0808C500 adds r0, r4, #0 bl sub_08078800 ldr r1, _0808C2F4 @ =gUnk_0811F740 ldrh r0, [r5] adds r0, r0, r1 ldrb r2, [r0] adds r0, r4, #0 movs r1, #0 movs r3, #0 bl sub_08078850 b _0808C31C .align 2, 0 _0808C2F4: .4byte gUnk_0811F740 _0808C2F8: movs r0, #4 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #8 ands r0, r1 strb r0, [r4, #0x18] b _0808C31C _0808C306: movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] adds r0, r4, #0 bl sub_0808C500 _0808C31C: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0808C320 sub_0808C320: @ 0x0808C320 push {r4, lr} adds r4, r0, #0 adds r0, #0x39 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 beq _0808C344 movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_080788E0 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 _0808C344: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808C348 sub_0808C348: @ 0x0808C348 push {r4, lr} adds r4, r0, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _0808C37C ldr r0, _0808C374 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #3 ands r0, r1 cmp r0, #0 bne _0808C36A ldr r0, _0808C378 @ =0x00000185 bl PlaySFX _0808C36A: adds r0, r4, #0 bl sub_08004274 b _0808C382 .align 2, 0 _0808C374: .4byte gUnk_030010A0 _0808C378: .4byte 0x00000185 _0808C37C: adds r0, r4, #0 bl sub_0808C4BC _0808C382: pop {r4, pc} thumb_func_start sub_0808C384 sub_0808C384: @ 0x0808C384 push {r4, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808C3B4 ldrb r0, [r4, #0xa] cmp r0, #3 bhi _0808C3B0 movs r0, #0x40 movs r1, #0 movs r2, #1 bl sub_08078AC0 ldr r1, _0808C3B8 @ =gLinkEntity ldrb r0, [r4, #0xa] lsls r0, r0, #3 strb r0, [r1, #0x15] _0808C3B0: bl sub_0805E780 _0808C3B4: pop {r4, pc} .align 2, 0 _0808C3B8: .4byte gLinkEntity thumb_func_start sub_0808C3BC sub_0808C3BC: @ 0x0808C3BC push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x76 ldrh r1, [r5] bl sub_08083734 cmp r0, #0 beq _0808C40E movs r0, #5 strb r0, [r4, #0xc] movs r0, #0xc strb r0, [r4, #0xe] ldrb r1, [r4, #0x18] subs r0, #0x10 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] ldrb r0, [r5] lsls r0, r0, #3 movs r1, #0x10 eors r0, r1 strb r0, [r4, #0x15] ldrh r1, [r5] lsls r1, r1, #1 ldr r0, _0808C410 @ =gUnk_081214F4 adds r1, r1, r0 movs r0, #0 ldrsb r0, [r1, r0] ldrh r2, [r4, #0x2e] adds r0, r0, r2 strh r0, [r4, #0x2e] movs r0, #1 ldrsb r0, [r1, r0] ldrh r1, [r4, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] adds r0, r4, #0 bl sub_0808C500 _0808C40E: pop {r4, r5, pc} .align 2, 0 _0808C410: .4byte gUnk_081214F4 thumb_func_start sub_0808C414 sub_0808C414: @ 0x0808C414 push {r4, r5, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _0808C49A movs r0, #6 strb r0, [r4, #0xc] strh r1, [r4, #0x36] adds r0, r4, #0 adds r0, #0x70 ldrh r0, [r0] strh r0, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x72 ldrh r0, [r0] strh r0, [r4, #0x32] adds r0, r4, #0 adds r0, #0x76 ldrh r0, [r0] lsls r0, r0, #2 ldr r1, _0808C49C @ =gUnk_081214FC adds r5, r0, r1 adds r0, r4, #0 movs r1, #0x11 movs r2, #0x40 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _0808C470 movs r0, #0 ldrsb r0, [r5, r0] ldrh r2, [r1, #0x2e] adds r0, r0, r2 strh r0, [r1, #0x2e] movs r0, #1 ldrsb r0, [r5, r0] ldrh r2, [r1, #0x32] adds r0, r0, r2 strh r0, [r1, #0x32] _0808C470: adds r0, r4, #0 movs r1, #0x11 movs r2, #0x40 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _0808C494 movs r0, #2 ldrsb r0, [r5, r0] ldrh r2, [r1, #0x2e] adds r0, r0, r2 strh r0, [r1, #0x2e] movs r0, #3 ldrsb r0, [r5, r0] ldrh r2, [r1, #0x32] adds r0, r0, r2 strh r0, [r1, #0x32] _0808C494: ldr r0, _0808C4A0 @ =0x0000010B bl sub_08004488 _0808C49A: pop {r4, r5, pc} .align 2, 0 _0808C49C: .4byte gUnk_081214FC _0808C4A0: .4byte 0x0000010B thumb_func_start sub_0808C4A4 sub_0808C4A4: @ 0x0808C4A4 push {r4, lr} adds r4, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0808C4B8 movs r0, #2 strb r0, [r4, #0xc] _0808C4B8: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808C4BC sub_0808C4BC: @ 0x0808C4BC push {lr} movs r1, #3 strb r1, [r0, #0xc] movs r1, #0xc strb r1, [r0, #0xe] adds r2, r0, #0 adds r2, #0x76 ldrh r1, [r2] lsls r1, r1, #3 strb r1, [r0, #0x15] ldrh r2, [r2] lsls r2, r2, #1 ldr r1, _0808C4F8 @ =gUnk_0812150C adds r2, r2, r1 movs r1, #0 ldrsb r1, [r2, r1] ldrh r3, [r0, #0x2e] adds r1, r1, r3 strh r1, [r0, #0x2e] movs r1, #1 ldrsb r1, [r2, r1] ldrh r2, [r0, #0x32] adds r1, r1, r2 strh r1, [r0, #0x32] bl sub_0808C5D0 ldr r0, _0808C4FC @ =0x0000010B bl PlaySFX pop {pc} .align 2, 0 _0808C4F8: .4byte gUnk_0812150C _0808C4FC: .4byte 0x0000010B thumb_func_start sub_0808C500 sub_0808C500: @ 0x0808C500 push {r4, r5, r6, lr} adds r4, r0, #0 adds r0, #0x76 ldrh r0, [r0] cmp r0, #0 beq _0808C510 cmp r0, #2 bne _0808C570 _0808C510: adds r6, r4, #0 adds r6, #0x74 ldrh r0, [r6] subs r0, #1 adds r5, r4, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080001DA adds r1, r4, #0 adds r1, #0x78 strh r0, [r1] ldrh r0, [r6] ldrb r1, [r5] bl sub_080001DA adds r1, r4, #0 adds r1, #0x7a strh r0, [r1] ldrh r0, [r6] adds r0, #1 ldrb r1, [r5] bl sub_080001DA adds r1, r4, #0 adds r1, #0x7c strh r0, [r1] ldr r4, _0808C56C @ =0x00004022 ldrh r1, [r6] subs r1, #1 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer ldrh r1, [r6] ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer ldrh r1, [r6] adds r1, #1 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer b _0808C5CA .align 2, 0 _0808C56C: .4byte 0x00004022 _0808C570: adds r6, r4, #0 adds r6, #0x74 ldrh r0, [r6] subs r0, #0x40 adds r5, r4, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080001DA adds r1, r4, #0 adds r1, #0x78 strh r0, [r1] ldrh r0, [r6] ldrb r1, [r5] bl sub_080001DA adds r1, r4, #0 adds r1, #0x7a strh r0, [r1] ldrh r0, [r6] adds r0, #0x40 ldrb r1, [r5] bl sub_080001DA adds r1, r4, #0 adds r1, #0x7c strh r0, [r1] ldr r4, _0808C5CC @ =0x00004022 ldrh r1, [r6] subs r1, #0x40 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer ldrh r1, [r6] ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer ldrh r1, [r6] adds r1, #0x40 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer _0808C5CA: pop {r4, r5, r6, pc} .align 2, 0 _0808C5CC: .4byte 0x00004022 thumb_func_start sub_0808C5D0 sub_0808C5D0: @ 0x0808C5D0 push {r4, r5, r6, lr} adds r6, r0, #0 adds r0, #0x76 ldrh r0, [r0] cmp r0, #0 beq _0808C5E0 cmp r0, #2 bne _0808C618 _0808C5E0: adds r0, r6, #0 adds r0, #0x78 ldrh r0, [r0] adds r5, r6, #0 adds r5, #0x74 ldrh r1, [r5] subs r1, #1 adds r4, r6, #0 adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer adds r0, r6, #0 adds r0, #0x7a ldrh r0, [r0] ldrh r1, [r5] ldrb r2, [r4] bl UpdateCollisionLayer adds r0, r6, #0 adds r0, #0x7c ldrh r0, [r0] ldrh r1, [r5] adds r1, #1 ldrb r2, [r4] bl UpdateCollisionLayer b _0808C64E _0808C618: adds r0, r6, #0 adds r0, #0x78 ldrh r0, [r0] adds r5, r6, #0 adds r5, #0x74 ldrh r1, [r5] subs r1, #0x40 adds r4, r6, #0 adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer adds r0, r6, #0 adds r0, #0x7a ldrh r0, [r0] ldrh r1, [r5] ldrb r2, [r4] bl UpdateCollisionLayer adds r0, r6, #0 adds r0, #0x7c ldrh r0, [r0] ldrh r1, [r5] adds r1, #0x40 ldrb r2, [r4] bl UpdateCollisionLayer _0808C64E: pop {r4, r5, r6, pc} thumb_func_start sub_0808C650 sub_0808C650: @ 0x0808C650 push {r4, lr} adds r4, r0, #0 adds r2, r1, #0 movs r0, #0x3a movs r1, #0 bl CreateObject cmp r0, #0 beq _0808C670 str r4, [r0, #0x50] ldr r1, _0808C66C @ =gUnk_02036BB8 movs r0, #0 b _0808C674 .align 2, 0 _0808C66C: .4byte gUnk_02036BB8 _0808C670: ldr r1, _0808C678 @ =gUnk_02036BB8 movs r0, #1 _0808C674: str r0, [r1] pop {r4, pc} .align 2, 0 _0808C678: .4byte gUnk_02036BB8 thumb_func_start sub_0808C67C sub_0808C67C: @ 0x0808C67C ldr r0, _0808C684 @ =gUnk_02036BB8 ldr r0, [r0] bx lr .align 2, 0 _0808C684: .4byte gUnk_02036BB8 thumb_func_start sub_0808C688 sub_0808C688: @ 0x0808C688 push {lr} bl sub_0801E104 ldr r1, _0808C698 @ =gUnk_02036BB8 movs r0, #1 str r0, [r1] pop {pc} .align 2, 0 _0808C698: .4byte gUnk_02036BB8 thumb_func_start sub_0808C69C sub_0808C69C: @ 0x0808C69C push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xa] cmp r0, #0 bne _0808C6BC ldr r0, _0808C6B8 @ =gUnk_08121638 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 b _0808C6CC .align 2, 0 _0808C6B8: .4byte gUnk_08121638 _0808C6BC: ldr r0, _0808C6D0 @ =gUnk_08121640 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 _0808C6CC: pop {pc} .align 2, 0 _0808C6D0: .4byte gUnk_08121640 thumb_func_start sub_0808C6D4 sub_0808C6D4: @ 0x0808C6D4 push {r4, r5, lr} adds r5, r0, #0 ldrb r1, [r5, #0xb] lsls r0, r1, #2 adds r0, r0, r1 lsls r0, r0, #2 ldr r1, _0808C744 @ =gUnk_081215E8 adds r4, r0, r1 ldrh r0, [r4, #4] adds r1, r5, #0 adds r1, #0x86 strh r0, [r1] ldrh r0, [r4, #6] subs r1, #1 strb r0, [r1] ldrh r1, [r4, #8] adds r0, r5, #0 adds r0, #0x84 strb r1, [r0] ldrh r0, [r4, #0xa] adds r1, r5, #0 adds r1, #0x83 strb r0, [r1] ldrh r0, [r4, #0xc] subs r1, #1 strb r0, [r1] ldrh r0, [r4, #0xe] subs r1, #1 strb r0, [r1] ldr r0, _0808C748 @ =gLCDControls adds r0, #0x60 ldrh r1, [r0] movs r0, #0xff lsls r0, r0, #8 ands r0, r1 ldrh r1, [r4, #0x10] orrs r0, r1 ldrh r1, [r4, #0x12] bl sub_0801E1B8 movs r0, #1 strb r0, [r5, #0xc] adds r0, r5, #0 bl sub_0808C74C ldrh r2, [r4] movs r0, #0x3a movs r1, #1 bl CreateObject cmp r0, #0 beq _0808C742 ldrh r1, [r4, #2] adds r0, #0x6a strh r1, [r0] _0808C742: pop {r4, r5, pc} .align 2, 0 _0808C744: .4byte gUnk_081215E8 _0808C748: .4byte gLCDControls thumb_func_start sub_0808C74C sub_0808C74C: @ 0x0808C74C push {r4, r5, r6, lr} adds r4, r0, #0 ldr r3, [r4, #0x50] cmp r3, #0 beq _0808C76C ldr r2, _0808C768 @ =gRoomControls ldrh r0, [r3, #0x2e] ldrh r1, [r2, #0xa] subs r0, r0, r1 strh r0, [r4, #0x2e] ldrh r0, [r3, #0x32] ldrh r1, [r2, #0xc] subs r0, r0, r1 b _0808C772 .align 2, 0 _0808C768: .4byte gRoomControls _0808C76C: movs r0, #0x78 strh r0, [r4, #0x2e] movs r0, #0x50 _0808C772: strh r0, [r4, #0x32] adds r5, r4, #0 adds r5, #0x86 movs r1, #0 ldrsh r0, [r5, r1] cmp r0, #0 bge _0808C79C movs r2, #0x2e ldrsh r0, [r4, r2] movs r3, #0x32 ldrsh r1, [r4, r3] movs r2, #0 movs r3, #0 bl sub_0801E49C ldr r1, _0808C83C @ =gUnk_02036BB8 movs r0, #1 str r0, [r1] adds r0, r4, #0 bl sub_0808C840 _0808C79C: movs r6, #0 ldrsh r0, [r5, r6] movs r2, #0xfa lsls r2, r2, #1 cmp r0, r2 ble _0808C7C2 movs r1, #0x2e ldrsh r0, [r4, r1] movs r3, #0x32 ldrsh r1, [r4, r3] movs r3, #0 bl sub_0801E49C ldr r1, _0808C83C @ =gUnk_02036BB8 movs r0, #1 str r0, [r1] adds r0, r4, #0 bl sub_0808C840 _0808C7C2: adds r1, r4, #0 adds r1, #0x85 movs r0, #0 ldrsb r0, [r1, r0] ldrh r6, [r5] adds r0, r0, r6 strh r0, [r5] adds r0, r4, #0 adds r0, #0x84 ldrb r0, [r0] ldrb r2, [r1] adds r0, r0, r2 strb r0, [r1] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0x10 ble _0808C7E8 movs r0, #0x10 strb r0, [r1] _0808C7E8: movs r0, #0 ldrsb r0, [r1, r0] movs r2, #0x10 rsbs r2, r2, #0 cmp r0, r2 bge _0808C7F6 strb r2, [r1] _0808C7F6: adds r3, r4, #0 adds r3, #0x83 adds r1, r4, #0 adds r1, #0x82 ldrb r0, [r1] ldrb r6, [r3] adds r0, r0, r6 strb r0, [r3] adds r0, r4, #0 adds r0, #0x81 ldrb r0, [r0] ldrb r6, [r1] adds r0, r0, r6 strb r0, [r1] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0x10 ble _0808C81E movs r0, #0x10 strb r0, [r1] _0808C81E: movs r0, #0 ldrsb r0, [r1, r0] cmp r0, r2 bge _0808C828 strb r2, [r1] _0808C828: movs r1, #0x2e ldrsh r0, [r4, r1] movs r2, #0x32 ldrsh r1, [r4, r2] movs r4, #0 ldrsh r2, [r5, r4] ldrb r3, [r3] bl sub_0801E49C pop {r4, r5, r6, pc} .align 2, 0 _0808C83C: .4byte gUnk_02036BB8 thumb_func_start sub_0808C840 sub_0808C840: @ 0x0808C840 push {lr} ldr r0, _0808C854 @ =gLCDControls adds r0, #0x66 movs r1, #0 strh r1, [r0] bl sub_0801E104 bl sub_0805E780 pop {pc} .align 2, 0 _0808C854: .4byte gLCDControls thumb_func_start sub_0808C858 sub_0808C858: @ 0x0808C858 push {lr} adds r2, r0, #0 ldrb r1, [r2, #0xb] movs r0, #2 ands r0, r1 cmp r0, #0 beq _0808C878 ldr r1, _0808C870 @ =gLCDControls adds r3, r1, #0 adds r3, #0x66 ldr r0, _0808C874 @ =0x00003FBF b _0808C880 .align 2, 0 _0808C870: .4byte gLCDControls _0808C874: .4byte 0x00003FBF _0808C878: ldr r1, _0808C898 @ =gLCDControls adds r3, r1, #0 adds r3, #0x66 ldr r0, _0808C89C @ =0x00003FFF _0808C880: strh r0, [r3] adds r3, r1, #0 ldrb r1, [r2, #0xb] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808C8A0 adds r1, r3, #0 adds r1, #0x6a movs r0, #0 b _0808C8A6 .align 2, 0 _0808C898: .4byte gLCDControls _0808C89C: .4byte 0x00003FFF _0808C8A0: adds r1, r3, #0 adds r1, #0x6a movs r0, #0x10 _0808C8A6: strh r0, [r1] movs r0, #1 strb r0, [r2, #0xc] adds r1, r2, #0 adds r1, #0x68 adds r0, #0xff strh r0, [r1] pop {pc} .align 2, 0 thumb_func_start sub_0808C8B8 sub_0808C8B8: @ 0x0808C8B8 push {lr} adds r3, r0, #0 adds r2, r3, #0 adds r2, #0x68 adds r1, r3, #0 adds r1, #0x6a ldrh r0, [r2] ldrh r1, [r1] subs r0, r0, r1 strh r0, [r2] lsls r0, r0, #0x10 cmp r0, #0 bge _0808C8D6 movs r0, #0 strh r0, [r2] _0808C8D6: ldrb r1, [r3, #0xb] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808C8F8 ldr r0, _0808C8F4 @ =gLCDControls ldrh r1, [r2] lsls r1, r1, #0x10 asrs r1, r1, #0x14 movs r2, #0x10 subs r2, r2, r1 adds r0, #0x6a strh r2, [r0] b _0808C904 .align 2, 0 _0808C8F4: .4byte gLCDControls _0808C8F8: ldr r1, _0808C918 @ =gLCDControls ldrh r0, [r2] lsls r0, r0, #0x10 asrs r0, r0, #0x14 adds r1, #0x6a strh r0, [r1] _0808C904: adds r0, r3, #0 adds r0, #0x68 movs r1, #0 ldrsh r0, [r0, r1] cmp r0, #0 bne _0808C914 bl sub_0805E780 _0808C914: pop {pc} .align 2, 0 _0808C918: .4byte gLCDControls thumb_func_start sub_0808C91C sub_0808C91C: @ 0x0808C91C push {lr} ldr r2, _0808C930 @ =gUnk_08121668 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808C930: .4byte gUnk_08121668 thumb_func_start sub_0808C934 sub_0808C934: @ 0x0808C934 push {lr} ldr r2, _0808C948 @ =gUnk_08121670 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808C948: .4byte gUnk_08121670 thumb_func_start sub_0808C94C sub_0808C94C: @ 0x0808C94C push {lr} ldr r2, _0808C960 @ =gUnk_08121678 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808C960: .4byte gUnk_08121678 thumb_func_start sub_0808C964 sub_0808C964: @ 0x0808C964 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0xa] strb r1, [r4, #0x1e] ldrb r0, [r4, #9] cmp r0, #0x76 bne _0808C982 ldr r0, _0808CA08 @ =gUnk_02032EC0 adds r0, #0x20 ldrb r0, [r0] cmp r0, #2 beq _0808C982 adds r0, r1, #0 subs r0, #9 strb r0, [r4, #0xa] _0808C982: ldrb r0, [r4, #0xa] cmp r0, #4 bls _0808C996 ldr r0, _0808CA0C @ =gUnk_02033A90 ldrb r0, [r0, #0x16] ldrb r1, [r4, #0xb] cmp r0, r1 beq _0808C996 bl sub_0805E780 _0808C996: movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r2, [r4, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x80 orrs r0, r2 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] ands r1, r0 orrs r1, r2 strb r1, [r4, #0x19] ldrb r0, [r4, #0xb] adds r3, r4, #0 adds r3, #0x29 movs r1, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] ldrb r0, [r4, #9] cmp r0, #0x75 beq _0808CA04 ldrb r2, [r4, #0xa] subs r0, r2, #1 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #2 bhi _0808CA04 ldrb r0, [r4, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x19] lsls r0, r2, #0x18 lsrs r0, r0, #0x18 movs r2, #0x80 lsls r2, r2, #1 cmp r0, #1 bne _0808C9FA movs r2, #0xe0 _0808C9FA: adds r0, r4, #0 adds r1, r2, #0 movs r3, #0 bl sub_0805EC9C _0808CA04: pop {r4, pc} .align 2, 0 _0808CA08: .4byte gUnk_02032EC0 _0808CA0C: .4byte gUnk_02033A90 thumb_func_start sub_0808CA10 sub_0808CA10: @ 0x0808CA10 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #2 beq _0808CA40 cmp r0, #2 bgt _0808CA24 cmp r0, #1 beq _0808CA2A b _0808CA78 _0808CA24: cmp r0, #3 beq _0808CA60 b _0808CA78 _0808CA2A: ldr r2, _0808CA3C @ =gUnk_02018EB0 ldrb r0, [r2, #0x18] cmp r0, #0 beq _0808CA78 movs r0, #0 movs r1, #0x20 strb r1, [r4, #0xe] strb r0, [r2, #0x18] b _0808CA50 .align 2, 0 _0808CA3C: .4byte gUnk_02018EB0 _0808CA40: ldr r2, _0808CA5C @ =gUnk_02018EB0 ldrb r0, [r2, #0x19] cmp r0, #0 beq _0808CA78 movs r0, #0 movs r1, #0x20 strb r1, [r4, #0xe] strb r0, [r2, #0x19] _0808CA50: movs r0, #0x97 lsls r0, r0, #1 bl PlaySFX b _0808CA78 .align 2, 0 _0808CA5C: .4byte gUnk_02018EB0 _0808CA60: ldr r2, _0808CABC @ =gUnk_02018EB0 ldrb r0, [r2, #0x1a] cmp r0, #0 beq _0808CA78 movs r0, #0 movs r1, #0x20 strb r1, [r4, #0xe] strb r0, [r2, #0x1a] movs r0, #0x97 lsls r0, r0, #1 bl PlaySFX _0808CA78: ldrb r0, [r4, #9] cmp r0, #0x75 beq _0808CAE0 ldrb r1, [r4, #0xa] subs r0, r1, #1 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 adds r5, r1, #0 cmp r0, #2 bhi _0808CAE0 ldrb r1, [r4, #0xe] cmp r1, #0 beq _0808CAE0 subs r1, #1 strb r1, [r4, #0xe] ldrb r0, [r4, #0xf] adds r2, r0, #1 strb r2, [r4, #0xf] lsls r1, r1, #0x18 cmp r1, #0 beq _0808CAC4 ldr r0, _0808CAC0 @ =gUnk_08121648 movs r1, #0xe ands r1, r2 lsls r2, r1, #1 adds r2, r2, r0 movs r6, #0 ldrsh r3, [r2, r6] adds r1, #1 lsls r1, r1, #1 adds r1, r1, r0 movs r0, #0 ldrsh r2, [r1, r0] b _0808CACA .align 2, 0 _0808CABC: .4byte gUnk_02018EB0 _0808CAC0: .4byte gUnk_08121648 _0808CAC4: movs r2, #0x80 lsls r2, r2, #1 adds r3, r2, #0 _0808CACA: lsls r0, r5, #0x18 lsrs r0, r0, #0x18 cmp r0, #1 bne _0808CAD6 subs r3, #0x20 subs r2, #0x20 _0808CAD6: adds r0, r4, #0 adds r1, r3, #0 movs r3, #0 bl sub_0805EC9C _0808CAE0: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0808CAE4 sub_0808CAE4: @ 0x0808CAE4 push {lr} ldr r2, _0808CAF8 @ =gUnk_08121680 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808CAF8: .4byte gUnk_08121680 thumb_func_start sub_0808CAFC sub_0808CAFC: @ 0x0808CAFC push {r4, lr} adds r4, r0, #0 ldr r1, _0808CB18 @ =gUnk_08121688 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl sub_0808CB9C pop {r4, pc} .align 2, 0 _0808CB18: .4byte gUnk_08121688 thumb_func_start sub_0808CB1C sub_0808CB1C: @ 0x0808CB1C push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0808CB70 movs r2, #1 strb r2, [r4, #0xc] ldrb r0, [r4, #0x18] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #0xa7 strh r0, [r4, #0x12] movs r0, #0xd strb r0, [r4, #0x1e] adds r0, r4, #0 adds r0, #0x60 strh r2, [r0] ldrb r1, [r4, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r4, #0x1a] ldrb r2, [r4, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 strb r0, [r4, #0x19] adds r3, r4, #0 adds r3, #0x29 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 strb r0, [r3] ldrb r0, [r4, #0x1b] ands r1, r0 movs r0, #0x80 orrs r1, r0 strb r1, [r4, #0x1b] _0808CB70: ldr r0, [r4, #0x50] ldr r1, [r0, #0x2c] str r1, [r4, #0x2c] ldr r1, [r0, #0x30] str r1, [r4, #0x30] movs r5, #0 str r5, [r4, #0x34] adds r1, r4, #0 bl sub_0806FAD8 ldrb r0, [r4, #0xd] cmp r0, #0 beq _0808CB98 adds r0, r4, #0 adds r0, #0x60 movs r1, #0 strh r5, [r0] strb r1, [r4, #0xd] movs r0, #4 strb r0, [r4, #0x1e] _0808CB98: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0808CB9C sub_0808CB9C: @ 0x0808CB9C push {r4, r5, lr} adds r3, r0, #0 adds r0, #0x68 ldrh r1, [r0] ldrb r4, [r0] lsrs r5, r1, #8 movs r2, #0 ldrb r0, [r3, #0x14] cmp r0, #4 bls _0808CBB2 movs r2, #1 _0808CBB2: lsls r2, r2, #6 ldrb r1, [r3, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r3, #0x18] cmp r4, #0xb7 bhi _0808CBCA ldrb r0, [r3, #0x14] lsrs r0, r0, #1 adds r4, r4, r0 _0808CBCA: ldrh r0, [r3, #0x12] cmp r5, r0 bne _0808CBDA adds r0, r3, #0 adds r0, #0x58 ldrb r0, [r0] cmp r4, r0 beq _0808CBE4 _0808CBDA: strh r5, [r3, #0x12] adds r0, r3, #0 adds r1, r4, #0 bl LoadAnimation _0808CBE4: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0808CBE8 sub_0808CBE8: @ 0x0808CBE8 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r3, #4 strb r3, [r4, #0x14] ldrb r2, [r4, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 strb r0, [r4, #0x19] movs r0, #0x29 adds r0, r0, r4 mov ip, r0 ldrb r2, [r0] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 mov r2, ip strb r0, [r2] ldrb r0, [r4, #0x1b] ands r1, r0 movs r0, #0x80 orrs r1, r0 strb r1, [r4, #0x1b] adds r1, r4, #0 adds r1, #0x68 movs r0, #0x8a lsls r0, r0, #1 strh r0, [r1] subs r1, #0x10 movs r0, #0xff strb r0, [r1] ldr r0, _0808CC80 @ =0x0000FF50 strh r0, [r4, #0x36] adds r0, r4, #0 adds r0, #0x6a strh r3, [r0] ldrb r0, [r4, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 movs r1, #4 movs r2, #4 movs r3, #0 bl sub_0805EC9C ldr r0, _0808CC84 @ =gUnk_02018EB0 str r4, [r0, #0x14] movs r0, #0 bl sub_0807A094 adds r1, r0, #0 adds r0, r4, #0 bl sub_0801D2B4 movs r0, #0x3c movs r1, #1 movs r2, #0 bl CreateObject cmp r0, #0 beq _0808CC7C str r4, [r0, #0x50] str r0, [r4, #0x54] _0808CC7C: pop {r4, pc} .align 2, 0 _0808CC80: .4byte 0x0000FF50 _0808CC84: .4byte gUnk_02018EB0 thumb_func_start sub_0808CC88 sub_0808CC88: @ 0x0808CC88 push {r4, r5, lr} adds r5, r0, #0 adds r4, r5, #0 adds r4, #0x6a ldrh r1, [r4] ldr r0, _0808CCB8 @ =0x000003FF cmp r1, r0 bhi _0808CCB4 adds r0, r1, #4 strh r0, [r4] ldrh r2, [r4] adds r0, r5, #0 adds r1, r2, #0 movs r3, #0 bl sub_0805EC9C ldrh r1, [r4] adds r0, r5, #0 movs r2, #8 movs r3, #2 bl sub_0806FCF4 _0808CCB4: pop {r4, r5, pc} .align 2, 0 _0808CCB8: .4byte 0x000003FF thumb_func_start sub_0808CCBC sub_0808CCBC: @ 0x0808CCBC push {r4, lr} adds r4, r0, #0 bl sub_0808CC88 movs r1, #0x80 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _0808CCFA ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0x14 strb r0, [r4, #0x15] adds r0, #0xec strh r0, [r4, #0x24] movs r0, #0xc0 lsls r0, r0, #0xa str r0, [r4, #0x20] ldrb r1, [r4, #0x18] movs r0, #0x31 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] ldr r0, [r4, #0x54] movs r1, #1 strb r1, [r0, #0xd] ldr r0, _0808CCFC @ =gUnk_02018EB0 strb r1, [r0, #0x18] _0808CCFA: pop {r4, pc} .align 2, 0 _0808CCFC: .4byte gUnk_02018EB0 thumb_func_start sub_0808CD00 sub_0808CD00: @ 0x0808CD00 push {r4, lr} adds r4, r0, #0 bl sub_0808CC88 adds r0, r4, #0 bl sub_080042B8 movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 beq _0808CD24 adds r0, r4, #0 bl sub_0806F69C b _0808CD3E _0808CD24: ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0xa strb r0, [r4, #0x15] movs r0, #0xc0 strh r0, [r4, #0x24] movs r0, #0xa0 lsls r0, r0, #0xa str r0, [r4, #0x20] ldr r1, _0808CD40 @ =gUnk_02018EB0 movs r0, #1 strb r0, [r1, #0x19] _0808CD3E: pop {r4, pc} .align 2, 0 _0808CD40: .4byte gUnk_02018EB0 thumb_func_start sub_0808CD44 sub_0808CD44: @ 0x0808CD44 push {r4, lr} adds r4, r0, #0 bl sub_0808CC88 adds r0, r4, #0 bl sub_080042B8 movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 beq _0808CD68 adds r0, r4, #0 bl sub_0806F69C b _0808CD82 _0808CD68: ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0x11 strb r0, [r4, #0x15] adds r0, #0xef strh r0, [r4, #0x24] movs r0, #0x90 lsls r0, r0, #0xa str r0, [r4, #0x20] ldr r1, _0808CD84 @ =gUnk_02018EB0 movs r0, #1 strb r0, [r1, #0x1a] _0808CD82: pop {r4, pc} .align 2, 0 _0808CD84: .4byte gUnk_02018EB0 thumb_func_start sub_0808CD88 sub_0808CD88: @ 0x0808CD88 push {r4, lr} adds r4, r0, #0 bl sub_0808CC88 movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 beq _0808CDB8 adds r0, r4, #0 bl sub_080042B8 adds r0, r4, #0 bl sub_0806F69C movs r1, #0x2e ldrsh r0, [r4, r1] cmp r0, #0x7f bgt _0808CDD6 movs r0, #0x80 strh r0, [r4, #0x2e] b _0808CDD6 _0808CDB8: ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] adds r1, r4, #0 adds r1, #0x68 ldr r0, _0808CDD8 @ =0x00000C04 strh r0, [r1] ldr r0, [r4, #0x54] bl sub_0805E7BC adds r0, r4, #0 bl sub_0805EC60 _0808CDD6: pop {r4, pc} .align 2, 0 _0808CDD8: .4byte 0x00000C04 thumb_func_start sub_0808CDDC sub_0808CDDC: @ 0x0808CDDC push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808CDF6 ldrb r0, [r1, #0xc] adds r0, #1 strb r0, [r1, #0xc] movs r0, #0x10 strb r0, [r1, #0xe] _0808CDF6: pop {pc} thumb_func_start sub_0808CDF8 sub_0808CDF8: @ 0x0808CDF8 push {lr} adds r3, r0, #0 ldrb r0, [r3, #0xe] subs r0, #1 strb r0, [r3, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808CE2C ldr r0, _0808CE30 @ =gUnk_02033A90 ldrb r1, [r0, #0x16] ldrb r0, [r3, #0xc] adds r0, #1 adds r0, r0, r1 strb r0, [r3, #0xc] ldr r2, _0808CE34 @ =gUnk_081216B4 lsls r1, r1, #1 adds r0, r1, r2 ldrb r0, [r0] strb r0, [r3, #0x14] adds r1, #1 adds r1, r1, r2 ldrb r0, [r1] strb r0, [r3, #0x15] movs r0, #0xa0 lsls r0, r0, #1 strh r0, [r3, #0x24] _0808CE2C: pop {pc} .align 2, 0 _0808CE30: .4byte gUnk_02033A90 _0808CE34: .4byte gUnk_081216B4 thumb_func_start sub_0808CE38 sub_0808CE38: @ 0x0808CE38 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 bl sub_0806F69C movs r1, #0x32 ldrsh r0, [r4, r1] cmp r0, #0xc7 bgt _0808CE52 movs r0, #0x18 strb r0, [r4, #0x15] _0808CE52: movs r1, #0x2e ldrsh r0, [r4, r1] cmp r0, #0x2f bgt _0808CE60 ldr r1, _0808CE64 @ =gUnk_02018EB0 movs r0, #1 strb r0, [r1, #0x1b] _0808CE60: pop {r4, pc} .align 2, 0 _0808CE64: .4byte gUnk_02018EB0 thumb_func_start sub_0808CE68 sub_0808CE68: @ 0x0808CE68 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 bl sub_0806F69C movs r1, #0x32 ldrsh r0, [r4, r1] cmp r0, #0xc7 bgt _0808CE82 movs r0, #8 strb r0, [r4, #0x15] _0808CE82: movs r1, #0x2e ldrsh r0, [r4, r1] cmp r0, #0xd0 ble _0808CE90 ldr r1, _0808CE94 @ =gUnk_02018EB0 movs r0, #1 strb r0, [r1, #0x1b] _0808CE90: pop {r4, pc} .align 2, 0 _0808CE94: .4byte gUnk_02018EB0 thumb_func_start sub_0808CE98 sub_0808CE98: @ 0x0808CE98 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 bl sub_0806F69C movs r0, #0x32 ldrsh r1, [r4, r0] movs r0, #0x90 lsls r0, r0, #1 cmp r1, r0 ble _0808CEB8 ldr r1, _0808CEBC @ =gUnk_02018EB0 movs r0, #1 strb r0, [r1, #0x1b] _0808CEB8: pop {r4, pc} .align 2, 0 _0808CEBC: .4byte gUnk_02018EB0 thumb_func_start sub_0808CEC0 sub_0808CEC0: @ 0x0808CEC0 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 bl sub_0806F69C movs r1, #0x32 ldrsh r0, [r4, r1] cmp r0, #0xc7 bgt _0808CEDA movs r0, #0x18 strb r0, [r4, #0x15] _0808CEDA: movs r1, #0x2e ldrsh r0, [r4, r1] cmp r0, #0xf bgt _0808CEE8 ldr r1, _0808CEEC @ =gUnk_02018EB0 movs r0, #1 strb r0, [r1, #0x1b] _0808CEE8: pop {r4, pc} .align 2, 0 _0808CEEC: .4byte gUnk_02018EB0 thumb_func_start sub_0808CEF0 sub_0808CEF0: @ 0x0808CEF0 push {lr} ldr r2, _0808CF04 @ =gUnk_081216BC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808CF04: .4byte gUnk_081216BC thumb_func_start sub_0808CF08 sub_0808CF08: @ 0x0808CF08 push {r4, r5, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldr r2, _0808CF50 @ =gUnk_02033A90 ldr r3, _0808CF54 @ =gRoomControls ldrh r0, [r2, #0x12] ldrh r1, [r3, #0xa] subs r0, r0, r1 strh r0, [r4, #0x2e] ldrh r0, [r2, #0x14] ldrh r1, [r3, #0xc] subs r0, r0, r1 strh r0, [r4, #0x32] adds r5, r4, #0 adds r5, #0x68 movs r0, #0x80 strh r0, [r5] ldrb r1, [r4, #0x11] subs r0, #0x90 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r4, #0x11] ldr r0, _0808CF58 @ =0x00001F17 movs r1, #0 bl sub_0801E1B8 movs r1, #0x2e ldrsh r0, [r4, r1] movs r2, #0x32 ldrsh r1, [r4, r2] ldrh r2, [r5] bl sub_0801E1EC pop {r4, r5, pc} .align 2, 0 _0808CF50: .4byte gUnk_02033A90 _0808CF54: .4byte gRoomControls _0808CF58: .4byte 0x00001F17 thumb_func_start sub_0808CF5C sub_0808CF5C: @ 0x0808CF5C push {r4, r5, r6, lr} adds r5, r0, #0 adds r2, r5, #0 adds r2, #0x68 ldrh r0, [r2] subs r0, #2 strh r0, [r2] lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0x14 bls _0808CF82 movs r1, #0x2e ldrsh r0, [r5, r1] movs r3, #0x32 ldrsh r1, [r5, r3] ldrh r2, [r2] bl sub_0801E1EC b _0808D01E _0808CF82: ldr r0, _0808D020 @ =gLCDControls adds r0, #0x62 movs r1, #0x10 strh r1, [r0] bl sub_0808D030 movs r0, #0 bl sub_0801CFA8 bl sub_080ADD30 ldr r0, _0808D024 @ =gUnk_02024490 movs r6, #1 strb r6, [r0] ldrb r0, [r5, #0xa] lsls r4, r0, #1 adds r4, r4, r0 lsls r4, r4, #1 ldr r0, _0808D028 @ =gUnk_081216C8 adds r4, r4, r0 ldrh r1, [r4] adds r0, r5, #0 bl sub_080ADF80 ldrh r1, [r4, #2] adds r0, r5, #0 bl sub_0801D040 ldrh r0, [r4, #4] strh r0, [r5, #0x12] ldrb r0, [r5, #0xa] cmp r0, #2 bne _0808CFC6 strb r0, [r5, #0x1e] _0808CFC6: movs r2, #2 movs r0, #2 strb r0, [r5, #0xc] ldrb r1, [r5, #0x18] subs r0, #6 ands r0, r1 orrs r0, r2 strb r0, [r5, #0x18] ldrb r2, [r5, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 strb r0, [r5, #0x1b] ldrb r0, [r5, #0x19] ands r1, r0 strb r1, [r5, #0x19] adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] movs r0, #0x1e strb r0, [r5, #0xe] movs r0, #0xff strb r0, [r5, #0xf] ldrb r0, [r5, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r5, #0x19] movs r2, #0x80 lsls r2, r2, #1 adds r0, r5, #0 adds r1, r2, #0 movs r3, #0 bl sub_0805EC9C ldr r0, _0808D02C @ =gUnk_02033A90 strh r6, [r0, #0x10] movs r0, #5 movs r1, #8 bl DoFade _0808D01E: pop {r4, r5, r6, pc} .align 2, 0 _0808D020: .4byte gLCDControls _0808D024: .4byte gUnk_02024490 _0808D028: .4byte gUnk_081216C8 _0808D02C: .4byte gUnk_02033A90 thumb_func_start sub_0808D030 sub_0808D030: @ 0x0808D030 push {r4, r5, lr} ldr r4, _0808D058 @ =gUnk_03000020 movs r5, #0x80 adds r0, r4, #0 subs r0, #0x20 ldr r1, _0808D05C @ =0x00000B74 bl sub_0801D630 movs r1, #0xa8 lsls r1, r1, #2 adds r0, r1, #0 _0808D046: strh r0, [r4] adds r4, #8 subs r5, #1 cmp r5, #0 bne _0808D046 ldr r1, _0808D060 @ =gUnk_03000000 movs r0, #1 strb r0, [r1] pop {r4, r5, pc} .align 2, 0 _0808D058: .4byte gUnk_03000020 _0808D05C: .4byte 0x00000B74 _0808D060: .4byte gUnk_03000000 thumb_func_start sub_0808D064 sub_0808D064: @ 0x0808D064 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] adds r1, r0, #0 adds r1, #0xff strb r1, [r4, #0xe] lsls r0, r0, #0x18 lsrs r2, r0, #0x18 cmp r2, #0 beq _0808D0B4 adds r0, r4, #0 adds r0, #0x68 ldrh r3, [r0] adds r1, r3, #0 adds r2, r0, #0 cmp r1, #0 beq _0808D08C subs r0, r3, #2 strh r0, [r2] b _0808D08E _0808D08C: strh r1, [r2] _0808D08E: movs r1, #0x2e ldrsh r0, [r4, r1] movs r3, #0x32 ldrsh r1, [r4, r3] ldrh r2, [r2] bl sub_0801E1EC ldrb r0, [r4, #0xf] cmp r0, #0x80 bls _0808D0A6 subs r0, #8 strb r0, [r4, #0xf] _0808D0A6: ldrb r2, [r4, #0xf] adds r0, r4, #0 adds r1, r2, #0 movs r3, #0 bl sub_0805EC9C b _0808D0C2 _0808D0B4: ldr r1, _0808D0C4 @ =gUnk_02033A90 ldrb r0, [r1, #0xe] adds r0, #1 strb r0, [r1, #0xe] strh r2, [r1, #0x10] bl sub_0805E780 _0808D0C2: pop {r4, pc} .align 2, 0 _0808D0C4: .4byte gUnk_02033A90 thumb_func_start sub_0808D0C8 sub_0808D0C8: @ 0x0808D0C8 push {lr} ldr r2, _0808D0DC @ =gUnk_081216DC ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808D0DC: .4byte gUnk_081216DC thumb_func_start sub_0808D0E0 sub_0808D0E0: @ 0x0808D0E0 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r6, [r5, #0xc] cmp r6, #1 beq _0808D12C cmp r6, #1 bgt _0808D0F4 cmp r6, #0 beq _0808D0FA b _0808D192 _0808D0F4: cmp r6, #2 beq _0808D150 b _0808D192 _0808D0FA: movs r4, #1 strb r4, [r5, #0xc] bl Random movs r1, #0x1f ands r0, r1 movs r1, #0x40 subs r1, r1, r0 strb r1, [r5, #0xe] strb r6, [r5, #0x1e] strb r6, [r5, #0x14] ldrb r0, [r5, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r5, #0x19] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] adds r0, r5, #0 adds r0, #0x38 strb r4, [r0] b _0808D192 _0808D12C: ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808D192 movs r0, #8 strb r0, [r5, #0xe] movs r0, #4 strb r0, [r5, #0xf] movs r0, #2 strb r0, [r5, #0xc] bl Random movs r1, #3 ands r0, r1 strb r0, [r5, #0x14] b _0808D192 _0808D150: ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] movs r1, #0xff lsls r0, r0, #0x18 cmp r0, #0 bne _0808D192 ldrb r0, [r5, #0xf] subs r0, #1 strb r0, [r5, #0xf] ands r0, r1 cmp r0, #0 bne _0808D180 strb r0, [r5, #0x1e] movs r0, #1 strb r0, [r5, #0xc] bl Random movs r1, #0x1f ands r0, r1 movs r1, #0x40 subs r1, r1, r0 strb r1, [r5, #0xe] b _0808D192 _0808D180: movs r0, #8 strb r0, [r5, #0xe] ldrb r1, [r5, #0x14] ldrb r0, [r5, #0x1e] movs r2, #0 cmp r0, r1 beq _0808D190 adds r2, r1, #0 _0808D190: strb r2, [r5, #0x1e] _0808D192: pop {r4, r5, r6, pc} thumb_func_start sub_0808D194 sub_0808D194: @ 0x0808D194 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r1, [r5, #0xc] cmp r1, #1 beq _0808D234 cmp r1, #1 bgt _0808D1A8 cmp r1, #0 beq _0808D1AE b _0808D234 _0808D1A8: cmp r1, #2 beq _0808D1FC b _0808D234 _0808D1AE: movs r0, #1 strb r0, [r5, #0xc] movs r0, #8 strb r0, [r5, #0xe] strb r1, [r5, #0xf] strb r1, [r5, #0x1e] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldr r0, _0808D1F4 @ =0x00004069 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _0808D1F8 @ =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 subs r1, #0x40 movs r2, #1 bl UpdateCollisionLayer b _0808D234 .align 2, 0 _0808D1F4: .4byte 0x00004069 _0808D1F8: .4byte gRoomControls _0808D1FC: ldr r0, _0808D274 @ =gUnk_030010A0 ldr r3, [r0] movs r0, #3 ands r3, r0 cmp r3, #0 bne _0808D234 ldr r4, _0808D278 @ =gLCDControls ldrb r2, [r5, #0xd] lsls r1, r2, #8 movs r0, #0x10 subs r0, r0, r2 orrs r1, r0 adds r0, r4, #0 adds r0, #0x68 strh r1, [r0] ldrb r0, [r5, #0xd] adds r0, #1 strb r0, [r5, #0xd] lsls r1, r1, #0x10 movs r0, #0x80 lsls r0, r0, #0x15 cmp r1, r0 bne _0808D234 adds r0, r4, #0 adds r0, #0x66 strh r3, [r0] bl sub_0805E780 _0808D234: ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808D272 movs r0, #8 strb r0, [r5, #0xe] ldrb r0, [r5, #0xa] cmp r0, #9 bne _0808D24E movs r0, #2 strb r0, [r5, #0xe] _0808D24E: ldr r4, _0808D27C @ =gUnk_08121704 ldrb r0, [r5, #0xf] adds r1, r0, #1 strb r1, [r5, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x17 adds r0, r0, r4 ldrh r1, [r0] adds r0, r5, #0 bl sub_0801D2B4 ldrb r0, [r5, #0xf] lsls r0, r0, #1 adds r0, r0, r4 ldrh r0, [r0] cmp r0, #0 bne _0808D272 strb r0, [r5, #0xf] _0808D272: pop {r4, r5, r6, pc} .align 2, 0 _0808D274: .4byte gUnk_030010A0 _0808D278: .4byte gLCDControls _0808D27C: .4byte gUnk_08121704 thumb_func_start sub_0808D280 sub_0808D280: @ 0x0808D280 push {r4, lr} sub sp, #4 movs r4, #0 str r4, [sp] movs r0, #6 movs r1, #0x3e movs r2, #6 movs r3, #9 bl sub_0805EB2C adds r2, r0, #0 cmp r2, #0 beq _0808D2C4 movs r0, #2 strb r0, [r2, #0xc] strb r4, [r2, #0xd] ldrb r1, [r2, #0x19] subs r0, #0xf ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2, #0x19] ldr r1, _0808D2C8 @ =gLCDControls adds r2, r1, #0 adds r2, #0x66 movs r0, #0xc8 lsls r0, r0, #3 strh r0, [r2] adds r1, #0x68 movs r0, #0x10 strh r0, [r1] movs r0, #0xf6 bl PlaySFX _0808D2C4: add sp, #4 pop {r4, pc} .align 2, 0 _0808D2C8: .4byte gLCDControls thumb_func_start sub_0808D2CC sub_0808D2CC: @ 0x0808D2CC push {lr} sub sp, #4 movs r0, #0 str r0, [sp] movs r0, #6 movs r1, #0x3e movs r2, #6 movs r3, #1 bl sub_0805EB2C adds r1, r0, #0 cmp r1, #0 beq _0808D2F2 movs r0, #9 strb r0, [r1, #0xa] adds r0, r1, #0 movs r1, #2 bl sub_0805E3A0 _0808D2F2: add sp, #4 pop {pc} .align 2, 0 thumb_func_start nullsub_521 nullsub_521: @ 0x0808D2F8 bx lr .align 2, 0 thumb_func_start sub_0808D2FC sub_0808D2FC: @ 0x0808D2FC push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0808D31C strb r0, [r4, #0xc] strb r0, [r4, #0x1e] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 bl sub_0807DD64 _0808D31C: movs r0, #0x2e ldrsh r5, [r4, r0] adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 ldr r0, _0808D354 @ =gRoomControls ldrh r0, [r0, #0x16] cmp r0, #0 beq _0808D350 movs r1, #0x2e ldrsh r0, [r4, r1] cmp r5, r0 beq _0808D350 ldr r0, _0808D358 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #8 ands r0, r1 cmp r0, #0 bne _0808D350 ldr r0, _0808D35C @ =0x0000010F bl PlaySFX _0808D350: pop {r4, r5, pc} .align 2, 0 _0808D354: .4byte gRoomControls _0808D358: .4byte gUnk_030010A0 _0808D35C: .4byte 0x0000010F thumb_func_start sub_0808D360 sub_0808D360: @ 0x0808D360 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0808D382 strb r0, [r4, #0xc] movs r0, #1 strb r0, [r4, #0x1e] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 bl sub_0807DD64 _0808D382: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 pop {r4, pc} .align 2, 0 thumb_func_start sub_0808D394 sub_0808D394: @ 0x0808D394 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xc] cmp r0, #0 bne _0808D3C4 movs r0, #1 strb r0, [r5, #0xc] movs r0, #8 strb r0, [r5, #0xe] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldr r1, _0808D3FC @ =gLCDControls adds r2, r1, #0 adds r2, #0x66 movs r0, #0xc8 lsls r0, r0, #3 strh r0, [r2] adds r1, #0x68 ldr r0, _0808D400 @ =0x00001003 strh r0, [r1] _0808D3C4: ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808D3F8 movs r0, #2 strb r0, [r5, #0xe] ldr r4, _0808D404 @ =gUnk_08121720 ldrb r0, [r5, #0xf] adds r1, r0, #1 strb r1, [r5, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x17 adds r0, r0, r4 ldrh r1, [r0] adds r0, r5, #0 bl sub_0801D28C ldrb r0, [r5, #0xf] lsls r0, r0, #1 adds r0, r0, r4 ldrh r0, [r0] cmp r0, #0 bne _0808D3F8 strb r0, [r5, #0xf] _0808D3F8: pop {r4, r5, pc} .align 2, 0 _0808D3FC: .4byte gLCDControls _0808D400: .4byte 0x00001003 _0808D404: .4byte gUnk_08121720 thumb_func_start sub_0808D408 sub_0808D408: @ 0x0808D408 push {lr} adds r3, r0, #0 ldrb r0, [r3, #0xc] cmp r0, #0 bne _0808D458 movs r1, #1 strb r1, [r3, #0xc] ldrb r0, [r3, #0x19] movs r2, #0xc0 orrs r0, r2 strb r0, [r3, #0x19] movs r0, #0x29 adds r0, r0, r3 mov ip, r0 ldrb r0, [r0] movs r2, #7 orrs r0, r2 mov r2, ip strb r0, [r2] ldrb r2, [r3, #0x19] movs r0, #0xd rsbs r0, r0, #0 ands r0, r2 movs r2, #4 orrs r0, r2 strb r0, [r3, #0x19] ldrb r0, [r3, #0xb] strb r0, [r3, #0x1e] ldrb r0, [r3, #0xb] subs r1, r1, r0 lsls r1, r1, #9 movs r0, #0x80 lsls r0, r0, #1 adds r1, r1, r0 movs r2, #0xc0 rsbs r2, r2, #0 adds r0, r3, #0 movs r3, #0 bl sub_0805EC9C _0808D458: pop {pc} .align 2, 0 thumb_func_start sub_0808D45C sub_0808D45C: @ 0x0808D45C push {lr} ldr r2, _0808D470 @ =gUnk_0812172C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808D470: .4byte gUnk_0812172C thumb_func_start sub_0808D474 sub_0808D474: @ 0x0808D474 push {r4, r5, lr} adds r5, r0, #0 adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldrb r0, [r5, #0xb] strb r0, [r5, #0x1e] movs r1, #2 strb r1, [r5, #0xc] lsls r0, r0, #0x18 cmp r0, #0 bne _0808D4D4 movs r0, #0x7c bl sub_0807CBD0 adds r1, r0, #0 cmp r1, #0 bne _0808D4D4 movs r0, #1 strb r0, [r5, #0xc] strb r1, [r5, #0xe] ldrb r1, [r5, #0x19] subs r0, #0xe ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r5, #0x19] ldr r1, _0808D4CC @ =gLCDControls adds r2, r1, #0 adds r2, #0x66 movs r0, #0xc8 lsls r0, r0, #3 strh r0, [r2] adds r1, #0x68 movs r0, #0x80 lsls r0, r0, #5 strh r0, [r1] ldr r0, _0808D4D0 @ =0x00000179 bl PlaySFX b _0808D50E .align 2, 0 _0808D4CC: .4byte gLCDControls _0808D4D0: .4byte 0x00000179 _0808D4D4: movs r0, #8 strb r0, [r5, #0xe] movs r1, #0x2e ldrsh r0, [r5, r1] ldr r3, _0808D510 @ =gRoomControls ldrh r1, [r3, #6] subs r0, r0, r1 asrs r4, r0, #4 movs r2, #0x3f ands r4, r2 movs r1, #0x32 ldrsh r0, [r5, r1] ldrh r1, [r3, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r4, r0 ldrb r0, [r5, #0xb] cmp r0, #0 beq _0808D500 subs r4, #0x40 _0808D500: ldr r0, _0808D514 @ =0x00004069 adds r1, r5, #0 adds r1, #0x38 ldrb r2, [r1] adds r1, r4, #0 bl UpdateCollisionLayer _0808D50E: pop {r4, r5, pc} .align 2, 0 _0808D510: .4byte gRoomControls _0808D514: .4byte 0x00004069 thumb_func_start sub_0808D518 sub_0808D518: @ 0x0808D518 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r0, _0808D58C @ =gUnk_030010A0 ldr r2, [r0] movs r0, #3 ands r2, r0 cmp r2, #0 bne _0808D58A ldr r3, _0808D590 @ =gLCDControls ldrb r0, [r5, #0xe] movs r1, #0x10 subs r1, r1, r0 lsls r1, r1, #8 orrs r1, r0 adds r0, r3, #0 adds r0, #0x68 strh r1, [r0] ldrb r0, [r5, #0xe] adds r0, #1 strb r0, [r5, #0xe] lsls r1, r1, #0x10 lsrs r1, r1, #0x10 cmp r1, #0x10 bne _0808D58A movs r0, #2 strb r0, [r5, #0xc] movs r0, #8 strb r0, [r5, #0xe] ldrb r1, [r5, #0x19] subs r0, #0x15 ands r0, r1 strb r0, [r5, #0x19] adds r0, r3, #0 adds r0, #0x66 strh r2, [r0] ldr r0, _0808D594 @ =0x00004069 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _0808D598 @ =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 _0808D58A: pop {r4, r5, r6, pc} .align 2, 0 _0808D58C: .4byte gUnk_030010A0 _0808D590: .4byte gLCDControls _0808D594: .4byte 0x00004069 _0808D598: .4byte gRoomControls thumb_func_start sub_0808D59C sub_0808D59C: @ 0x0808D59C push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808D5D4 movs r0, #8 strb r0, [r5, #0xe] ldr r4, _0808D5D8 @ =gUnk_08121738 ldrb r0, [r5, #0xf] adds r1, r0, #1 strb r1, [r5, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x17 adds r0, r0, r4 ldrh r1, [r0] adds r0, r5, #0 bl sub_0801D2B4 ldrb r0, [r5, #0xf] lsls r0, r0, #1 adds r0, r0, r4 ldrh r0, [r0] cmp r0, #0 bne _0808D5D4 strb r0, [r5, #0xf] _0808D5D4: pop {r4, r5, pc} .align 2, 0 _0808D5D8: .4byte gUnk_08121738 thumb_func_start sub_0808D5DC sub_0808D5DC: @ 0x0808D5DC push {lr} adds r3, r0, #0 ldrb r0, [r3, #0xc] cmp r0, #0 bne _0808D614 movs r2, #1 movs r0, #1 strb r0, [r3, #0xc] ldrb r1, [r3, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r3, #0x18] ldrb r0, [r3, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r3, #0x19] adds r2, r3, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldrb r0, [r3, #0xa] strb r0, [r3, #0x1e] adds r0, r3, #0 bl sub_0808D618 _0808D614: pop {pc} .align 2, 0 thumb_func_start sub_0808D618 sub_0808D618: @ 0x0808D618 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] ldr r7, _0808D664 @ =gUnk_08121750 cmp r0, #0 beq _0808D626 ldr r7, _0808D668 @ =gUnk_0812176A _0808D626: movs r1, #0x2e ldrsh r0, [r4, r1] ldr r3, _0808D66C @ =gRoomControls ldrh r1, [r3, #6] subs r0, r0, r1 asrs r5, r0, #4 movs r2, #0x3f ands r5, r2 movs r1, #0x32 ldrsh r0, [r4, r1] ldrh r1, [r3, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r5, r0 movs r6, #0 adds r4, r7, #0 _0808D64A: movs r0, #0 ldrsh r1, [r4, r0] adds r1, r5, r1 ldr r0, _0808D670 @ =0x00004074 movs r2, #1 bl UpdateCollisionLayer adds r4, #2 adds r6, #1 cmp r6, #0xc bls _0808D64A pop {r4, r5, r6, r7, pc} .align 2, 0 _0808D664: .4byte gUnk_08121750 _0808D668: .4byte gUnk_0812176A _0808D66C: .4byte gRoomControls _0808D670: .4byte 0x00004074 thumb_func_start sub_0808D674 sub_0808D674: @ 0x0808D674 push {r4, lr} adds r4, r0, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808D750 movs r0, #0x7f ands r0, r1 cmp r0, #0x1f bhi _0808D750 lsls r0, r0, #2 ldr r1, _0808D698 @ =_0808D69C adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0808D698: .4byte _0808D69C _0808D69C: @ jump table .4byte _0808D740 @ case 0 .4byte _0808D740 @ case 1 .4byte _0808D750 @ case 2 .4byte _0808D750 @ case 3 .4byte _0808D740 @ case 4 .4byte _0808D740 @ case 5 .4byte _0808D740 @ case 6 .4byte _0808D750 @ case 7 .4byte _0808D740 @ case 8 .4byte _0808D740 @ case 9 .4byte _0808D740 @ case 10 .4byte _0808D740 @ case 11 .4byte _0808D740 @ case 12 .4byte _0808D750 @ case 13 .4byte _0808D750 @ case 14 .4byte _0808D750 @ case 15 .4byte _0808D750 @ case 16 .4byte _0808D750 @ case 17 .4byte _0808D750 @ case 18 .4byte _0808D748 @ case 19 .4byte _0808D71C @ case 20 .4byte _0808D750 @ case 21 .4byte _0808D750 @ case 22 .4byte _0808D750 @ case 23 .4byte _0808D750 @ case 24 .4byte _0808D750 @ case 25 .4byte _0808D750 @ case 26 .4byte _0808D750 @ case 27 .4byte _0808D750 @ case 28 .4byte _0808D750 @ case 29 .4byte _0808D740 @ case 30 .4byte _0808D73C @ case 31 _0808D71C: movs r0, #3 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] ldr r0, [r4, #0x4c] str r0, [r4, #0x54] b _0808D750 _0808D73C: bl sub_0805E780 _0808D740: adds r0, r4, #0 bl sub_0808DAD0 b _0808D750 _0808D748: adds r0, r4, #0 bl sub_0808D76C b _0808D766 _0808D750: ldr r0, _0808D768 @ =gUnk_08121784 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl sub_08080CB4 _0808D766: pop {r4, pc} .align 2, 0 _0808D768: .4byte gUnk_08121784 thumb_func_start sub_0808D76C sub_0808D76C: @ 0x0808D76C push {lr} ldr r2, _0808D780 @ =gUnk_08121798 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808D780: .4byte gUnk_08121798 thumb_func_start sub_0808D784 sub_0808D784: @ 0x0808D784 movs r3, #1 movs r1, #1 strb r1, [r0, #0xd] strb r1, [r0, #0x1d] ldrb r2, [r0, #0x18] subs r1, #5 ands r1, r2 orrs r1, r3 strb r1, [r0, #0x18] bx lr thumb_func_start sub_0808D798 sub_0808D798: @ 0x0808D798 push {lr} bl sub_0806F4E8 pop {pc} thumb_func_start sub_0808D7A0 sub_0808D7A0: @ 0x0808D7A0 push {r4, lr} adds r4, r0, #0 bl sub_0806F3E4 cmp r0, #0 beq _0808D7B2 adds r0, r4, #0 bl sub_0808DB2C _0808D7B2: pop {r4, pc} thumb_func_start sub_0808D7B4 sub_0808D7B4: @ 0x0808D7B4 push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x38 movs r0, #3 strb r0, [r1] adds r0, r4, #0 adds r0, #0x3c movs r2, #0x17 strb r2, [r0] adds r1, #8 movs r0, #0x49 strb r0, [r1] subs r1, #1 movs r0, #7 strb r0, [r1] adds r0, r4, #0 adds r0, #0x3b strb r2, [r0] adds r1, #6 movs r0, #0xff strb r0, [r1] ldr r0, _0808D818 @ =gUnk_080FD1A8 str r0, [r4, #0x48] movs r0, #1 strb r0, [r4, #0x1c] ldrh r1, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x74 strh r1, [r0] ldrh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 movs r0, #0x9b lsls r0, r0, #1 bl sub_08004488 ldrb r0, [r4, #0xb] cmp r0, #2 beq _0808D834 cmp r0, #2 bgt _0808D81C cmp r0, #0 beq _0808D822 b _0808D82E .align 2, 0 _0808D818: .4byte gUnk_080FD1A8 _0808D81C: cmp r0, #3 beq _0808D83C b _0808D82E _0808D822: movs r0, #0xf0 lsls r0, r0, #9 str r0, [r4, #0x20] ldrh r0, [r4, #0x36] adds r0, #8 strh r0, [r4, #0x36] _0808D82E: movs r0, #1 strb r0, [r4, #0xc] b _0808D842 _0808D834: adds r0, r4, #0 bl sub_0808DAD0 b _0808D842 _0808D83C: adds r0, r4, #0 bl sub_0808DB2C _0808D842: pop {r4, pc} thumb_func_start sub_0808D844 sub_0808D844: @ 0x0808D844 push {lr} adds r3, r0, #0 ldr r0, [r3, #0x34] ldr r1, _0808D870 @ =0xFFFF2000 adds r0, r0, r1 str r0, [r3, #0x34] adds r0, r3, #0 adds r0, #0x5a ldrb r0, [r0] cmp r0, #0 beq _0808D88A ldrb r0, [r3, #0xe] cmp r0, #0 beq _0808D874 adds r2, r3, #0 adds r2, #0x78 ldrh r1, [r2] lsls r0, r1, #4 subs r0, r0, r1 lsls r0, r0, #1 strh r0, [r2] b _0808D87E .align 2, 0 _0808D870: .4byte 0xFFFF2000 _0808D874: adds r1, r3, #0 adds r1, #0x78 movs r0, #0x96 lsls r0, r0, #2 strh r0, [r1] _0808D87E: movs r0, #2 strb r0, [r3, #0xc] movs r0, #1 strb r0, [r3, #0xf] movs r0, #0x80 strh r0, [r3, #0x24] _0808D88A: pop {pc} thumb_func_start sub_0808D88C sub_0808D88C: @ 0x0808D88C push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _0808D910 bl Random adds r5, r0, #0 ldrb r0, [r4, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x10] movs r0, #0x20 strb r0, [r4, #0xf] ldr r2, _0808D8D0 @ =gUnk_081217A4 lsrs r0, r5, #8 movs r1, #1 ands r0, r1 adds r0, r0, r2 ldrb r0, [r0] strh r0, [r4, #0x24] adds r0, r4, #0 bl sub_0808DAA0 cmp r0, #0 beq _0808D8D4 movs r0, #0x1f ands r5, r0 strb r5, [r4, #0x15] b _0808D8EE .align 2, 0 _0808D8D0: .4byte gUnk_081217A4 _0808D8D4: movs r1, #0x2e ldrsh r0, [r4, r1] movs r2, #0x32 ldrsh r1, [r4, r2] adds r2, r4, #0 adds r2, #0x74 ldrh r2, [r2] adds r3, r4, #0 adds r3, #0x76 ldrh r3, [r3] bl sub_080045D4 strb r0, [r4, #0x15] _0808D8EE: ldrb r1, [r4, #0x15] movs r0, #0xf ands r0, r1 cmp r0, #0 beq _0808D910 movs r0, #0x10 eors r1, r0 lsrs r1, r1, #4 movs r0, #1 ands r1, r0 lsls r1, r1, #6 ldrb r2, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _0808D910: adds r0, r4, #0 bl sub_080AEFB4 bl sub_0805E40C cmp r0, #0 bne _0808D954 ldrb r0, [r4, #0xb] cmp r0, #0 bne _0808D954 adds r5, r4, #0 adds r5, #0x78 ldrh r0, [r5] subs r0, #1 strh r0, [r5] lsls r0, r0, #0x10 cmp r0, #0 bne _0808D93C adds r0, r4, #0 movs r1, #0 bl sub_08081404 _0808D93C: ldrh r0, [r5] cmp r0, #0x77 bhi _0808D954 ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _0808D954: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0808D958 sub_0808D958: @ 0x0808D958 push {r4, lr} adds r4, r0, #0 ldr r2, [r4, #0x54] ldrh r1, [r2, #8] movs r0, #0xc2 lsls r0, r0, #2 cmp r1, r0 beq _0808D972 adds r0, r4, #0 movs r1, #0 bl sub_08081404 b _0808D992 _0808D972: adds r0, r2, #0 adds r1, r4, #0 bl CopyPosition ldrh r0, [r4, #0x36] subs r0, #1 strh r0, [r4, #0x36] ldr r1, _0808D994 @ =gLinkEntity adds r0, r4, #0 bl sub_080177A0 cmp r0, #0 beq _0808D992 adds r0, r4, #0 bl sub_0808DB2C _0808D992: pop {r4, pc} .align 2, 0 _0808D994: .4byte gLinkEntity thumb_func_start sub_0808D998 sub_0808D998: @ 0x0808D998 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r6, [r5, #0x54] ldr r2, _0808DA28 @ =gUnk_080C9160 ldrb r0, [r5, #0xe] lsls r0, r0, #1 adds r0, r0, r2 movs r3, #0 ldrsh r1, [r0, r3] lsls r0, r1, #2 adds r0, r0, r1 lsls r0, r0, #9 cmp r0, #0 bge _0808D9B8 ldr r1, _0808DA2C @ =0x0000FFFF adds r0, r0, r1 _0808D9B8: asrs r0, r0, #0x10 ldrh r3, [r6, #0x2e] adds r0, r0, r3 strh r0, [r5, #0x2e] ldrb r0, [r5, #0xe] adds r0, #0x40 lsls r0, r0, #1 adds r0, r0, r2 movs r2, #0 ldrsh r1, [r0, r2] lsls r0, r1, #2 adds r0, r0, r1 lsls r0, r0, #8 cmp r0, #0 bge _0808D9DA ldr r3, _0808DA2C @ =0x0000FFFF adds r0, r0, r3 _0808D9DA: asrs r1, r0, #0x10 ldrh r0, [r6, #0x32] subs r0, r0, r1 strh r0, [r5, #0x32] ldrb r3, [r5, #0xe] adds r0, r3, #0 adds r0, #8 strb r0, [r5, #0xe] ldrh r0, [r6, #0x36] strh r0, [r5, #0x36] ldrb r2, [r6, #0x1b] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r4, [r5, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r4 orrs r0, r2 strb r0, [r5, #0x1b] ldrb r0, [r6, #0x19] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r5, #0x19] ands r1, r2 orrs r1, r0 strb r1, [r5, #0x19] subs r3, #0x39 lsls r3, r3, #0x18 lsrs r3, r3, #0x18 cmp r3, #0x7e bhi _0808DA30 adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #8 rsbs r1, r1, #0 ands r1, r0 movs r0, #3 b _0808DA3E .align 2, 0 _0808DA28: .4byte gUnk_080C9160 _0808DA2C: .4byte 0x0000FFFF _0808DA30: adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #8 rsbs r1, r1, #0 ands r1, r0 movs r0, #5 _0808DA3E: orrs r1, r0 strb r1, [r2] ldrb r0, [r5, #0xf] subs r0, #1 strb r0, [r5, #0xf] lsls r0, r0, #0x18 adds r4, r5, #0 adds r4, #0x63 cmp r0, #0 bne _0808DA70 movs r0, #6 strb r0, [r5, #0xf] ldrb r0, [r4] subs r0, #1 strb r0, [r4] lsls r0, r0, #0x18 asrs r0, r0, #0x18 movs r1, #0x16 rsbs r1, r1, #0 cmp r0, r1 bge _0808DA70 adds r0, r5, #0 movs r1, #1 bl sub_08081404 _0808DA70: movs r1, #0 ldrsb r1, [r4, r1] movs r0, #0x11 rsbs r0, r0, #0 cmp r1, r0 bge _0808DA8E ldrb r2, [r5, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r5, #0x18] _0808DA8E: adds r1, r5, #0 adds r1, #0x87 ldrb r0, [r1] cmp r0, #0xa bls _0808DA9C movs r0, #0xa strb r0, [r1] _0808DA9C: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0808DAA0 sub_0808DAA0: @ 0x0808DAA0 push {lr} adds r2, r0, #0 movs r1, #0x2e ldrsh r0, [r2, r1] adds r1, r2, #0 adds r1, #0x74 ldrh r1, [r1] subs r0, r0, r1 adds r0, #0x30 cmp r0, #0x60 bhi _0808DACC movs r1, #0x32 ldrsh r0, [r2, r1] adds r1, r2, #0 adds r1, #0x76 ldrh r1, [r1] subs r0, r0, r1 adds r0, #0x30 cmp r0, #0x60 bhi _0808DACC movs r0, #1 b _0808DACE _0808DACC: movs r0, #0 _0808DACE: pop {pc} thumb_func_start sub_0808DAD0 sub_0808DAD0: @ 0x0808DAD0 push {r4, lr} adds r4, r0, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _0808DAE0 bl sub_0805E780 _0808DAE0: movs r0, #4 strb r0, [r4, #0xc] movs r0, #0x80 strb r0, [r4, #0xe] movs r0, #6 strb r0, [r4, #0xf] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x10 orrs r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x63 movs r0, #0xfb strb r0, [r1] ldr r0, _0808DB28 @ =gLinkEntity str r0, [r4, #0x54] adds r1, r4, #0 bl CopyPosition pop {r4, pc} .align 2, 0 _0808DB28: .4byte gLinkEntity thumb_func_start sub_0808DB2C sub_0808DB2C: @ 0x0808DB2C push {lr} adds r1, r0, #0 movs r2, #0 movs r0, #2 strb r0, [r1, #0xc] strb r2, [r1, #0xd] ldrb r2, [r1, #0x10] movs r0, #0x80 orrs r0, r2 strb r0, [r1, #0x10] adds r2, r1, #0 adds r2, #0x3b movs r0, #1 strb r0, [r2] ldr r0, _0808DB50 @ =gLinkEntity bl CopyPosition pop {pc} .align 2, 0 _0808DB50: .4byte gLinkEntity thumb_func_start sub_0808DB54 sub_0808DB54: @ 0x0808DB54 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r7, r0, #0 ldrb r0, [r7, #0xc] cmp r0, #1 beq _0808DBE8 cmp r0, #1 bgt _0808DB6C cmp r0, #0 beq _0808DB72 b _0808DC46 _0808DB6C: cmp r0, #2 beq _0808DC2C b _0808DC46 _0808DB72: ldrb r0, [r7, #0xe] movs r1, #3 cmp r0, #0 beq _0808DB7C movs r1, #1 _0808DB7C: strb r1, [r7, #0xc] adds r1, r7, #0 adds r1, #0x63 ldrb r0, [r1] adds r0, #8 strb r0, [r1] adds r0, r7, #0 movs r1, #0xa bl UpdateSprite ldrb r0, [r7, #0xc] cmp r0, #1 bne _0808DB9A ldr r0, _0808DBDC @ =0x0000FF80 strh r0, [r7, #0x36] _0808DB9A: ldrb r0, [r7, #0xb] cmp r0, #0 beq _0808DBA2 b _0808DD72 _0808DBA2: ldrh r1, [r7, #0x32] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 adds r0, #0xc strh r0, [r7, #0x32] ldr r0, _0808DBE0 @ =0x00004023 movs r2, #0x2e ldrsh r1, [r7, r2] ldr r3, _0808DBE4 @ =gRoomControls ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r5, #0x32 ldrsh r2, [r7, r5] ldrh r3, [r3, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 adds r2, r7, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer b _0808DD72 .align 2, 0 _0808DBDC: .4byte 0x0000FF80 _0808DBE0: .4byte 0x00004023 _0808DBE4: .4byte gRoomControls _0808DBE8: movs r1, #0x80 lsls r1, r1, #5 adds r0, r7, #0 bl sub_08003FC4 cmp r0, #0 beq _0808DBF8 b _0808DD72 _0808DBF8: adds r0, r7, #0 movs r1, #0x46 movs r2, #0x40 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _0808DC0E ldrh r0, [r1, #0x32] adds r0, #8 strh r0, [r1, #0x32] _0808DC0E: movs r0, #0x1e movs r1, #0 bl sub_08080964 ldr r0, _0808DC28 @ =0x0000010B bl PlaySFX movs r0, #2 strb r0, [r7, #0xc] movs r0, #0x3c strb r0, [r7, #0xe] b _0808DD72 .align 2, 0 _0808DC28: .4byte 0x0000010B _0808DC2C: ldrb r0, [r7, #0xe] subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 cmp r0, #0 beq _0808DC3A b _0808DD72 _0808DC3A: movs r0, #3 strb r0, [r7, #0xc] movs r0, #0x73 bl PlaySFX b _0808DD72 _0808DC46: ldrb r0, [r7, #0xb] cmp r0, #0 beq _0808DC4E b _0808DD72 _0808DC4E: ldr r0, _0808DCC8 @ =gLinkEntity movs r2, #0x32 ldrsh r1, [r0, r2] movs r3, #0x32 ldrsh r0, [r7, r3] cmp r1, r0 bge _0808DCDC ldr r0, _0808DCCC @ =gLinkState ldrb r0, [r0, #0x12] cmp r0, #0x1e bne _0808DC66 b _0808DD72 _0808DC66: adds r0, r7, #0 bl sub_080002A0 ldr r1, _0808DCD0 @ =0x00004017 cmp r0, r1 beq _0808DC74 b _0808DD72 _0808DC74: ldr r0, _0808DCD4 @ =0x00004023 movs r5, #0x2e ldrsh r1, [r7, r5] ldr r4, _0808DCD8 @ =gRoomControls ldrh r2, [r4, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r5, #0x3f ands r1, r5 movs r3, #0x32 ldrsh r2, [r7, r3] ldrh r3, [r4, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r5 lsls r2, r2, #6 orrs r1, r2 adds r6, r7, #0 adds r6, #0x38 ldrb r2, [r6] bl UpdateCollisionLayer movs r1, #0x2e ldrsh r0, [r7, r1] ldrh r1, [r4, #6] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r5 movs r2, #0x32 ldrsh r1, [r7, r2] ldrh r2, [r4, #8] adds r2, #0x10 subs r1, r1, r2 asrs r1, r1, #4 ands r1, r5 lsls r1, r1, #6 orrs r0, r1 ldrb r1, [r6] bl sub_0807BA8C b _0808DD72 .align 2, 0 _0808DCC8: .4byte gLinkEntity _0808DCCC: .4byte gLinkState _0808DCD0: .4byte 0x00004017 _0808DCD4: .4byte 0x00004023 _0808DCD8: .4byte gRoomControls _0808DCDC: adds r0, r7, #0 bl sub_080002A0 ldr r3, _0808DD44 @ =0x00004017 mov r8, r3 cmp r0, r8 beq _0808DD72 movs r5, #0x2e ldrsh r1, [r7, r5] ldr r5, _0808DD48 @ =gRoomControls ldrh r0, [r5, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r6, #0x3f ands r1, r6 movs r2, #0x32 ldrsh r0, [r7, r2] ldrh r2, [r5, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r6 lsls r0, r0, #6 orrs r1, r0 adds r4, r7, #0 adds r4, #0x38 ldrb r2, [r4] mov r0, r8 bl UpdateCollisionLayer ldrb r0, [r7, #0xa] cmp r0, #0 bne _0808DD4C movs r3, #0x2e ldrsh r1, [r7, r3] ldrh r0, [r5, #6] subs r1, r1, r0 asrs r1, r1, #4 ands r1, r6 movs r2, #0x32 ldrsh r0, [r7, r2] ldrh r2, [r5, #8] adds r2, #0x10 subs r0, r0, r2 asrs r0, r0, #4 ands r0, r6 lsls r0, r0, #6 orrs r1, r0 ldrb r2, [r4] mov r0, r8 bl UpdateCollisionLayer b _0808DD72 .align 2, 0 _0808DD44: .4byte 0x00004017 _0808DD48: .4byte gRoomControls _0808DD4C: ldr r0, _0808DD78 @ =0x00004014 movs r3, #0x2e ldrsh r1, [r7, r3] ldrh r2, [r5, #6] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r6 movs r3, #0x32 ldrsh r2, [r7, r3] ldrh r3, [r5, #8] adds r3, #0x10 subs r2, r2, r3 asrs r2, r2, #4 ands r2, r6 lsls r2, r2, #6 orrs r1, r2 ldrb r2, [r4] bl UpdateCollisionLayer _0808DD72: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _0808DD78: .4byte 0x00004014 thumb_func_start sub_0808DD7C sub_0808DD7C: @ 0x0808DD7C push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xa] cmp r0, #0 beq _0808DD9C ldr r0, _0808DD98 @ =gUnk_081217B0 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 b _0808DDAC .align 2, 0 _0808DD98: .4byte gUnk_081217B0 _0808DD9C: ldr r0, _0808DDB0 @ =gUnk_081217A8 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 _0808DDAC: pop {pc} .align 2, 0 _0808DDB0: .4byte gUnk_081217A8 thumb_func_start sub_0808DDB4 sub_0808DDB4: @ 0x0808DDB4 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4, #0xa] cmp r0, #0 beq _0808DDDC movs r0, #0x78 strb r0, [r4, #0xe] adds r1, r4, #0 adds r1, #0x6c movs r0, #0xf0 strh r0, [r1] adds r0, r4, #0 movs r1, #0 bl UpdateSprite adds r0, r4, #0 bl sub_0808DDE8 _0808DDDC: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808DDE0 sub_0808DDE0: @ 0x0808DDE0 push {lr} bl sub_0805E780 pop {pc} thumb_func_start sub_0808DDE8 sub_0808DDE8: @ 0x0808DDE8 push {r4, r5, lr} adds r5, r0, #0 adds r4, r5, #0 adds r4, #0x6c ldrh r0, [r4] subs r0, #1 strh r0, [r4] bl sub_0807953C cmp r0, #0 beq _0808DE04 ldrb r0, [r5, #0xf] adds r0, #1 strb r0, [r5, #0xf] _0808DE04: ldrb r0, [r5, #0xf] cmp r0, #0x1e bhi _0808DE1C ldr r0, _0808DE8C @ =gLinkState ldr r0, [r0, #0x30] ldr r1, _0808DE90 @ =0x00001810 ands r0, r1 cmp r0, #0 bne _0808DE1C ldrh r0, [r4] cmp r0, #0 bne _0808DE2A _0808DE1C: ldr r0, _0808DE8C @ =gLinkState ldr r1, [r0, #0x30] ldr r2, _0808DE94 @ =0xFFFFFBFF ands r1, r2 str r1, [r0, #0x30] bl sub_0805E780 _0808DE2A: ldr r3, _0808DE98 @ =gLinkEntity ldr r1, _0808DE9C @ =gUnk_081217B8 ldrb r0, [r3, #0x14] lsrs r0, r0, #1 adds r0, r0, r1 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r3, #0x2e] adds r0, r0, r1 strh r0, [r5, #0x2e] ldrh r0, [r3, #0x32] subs r0, #6 strh r0, [r5, #0x32] ldr r0, [r3, #0x34] str r0, [r5, #0x34] adds r0, r3, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r5, #0 adds r0, #0x38 strb r1, [r0] ldrb r2, [r3, #0x19] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r4, [r5, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r4 orrs r0, r2 strb r0, [r5, #0x19] ldrb r0, [r3, #0x1b] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r5, #0x1b] ands r1, r2 orrs r1, r0 strb r1, [r5, #0x1b] ldr r0, _0808DE8C @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 lsls r1, r1, #3 ands r0, r1 cmp r0, #0 beq _0808DEA0 adds r0, r5, #0 bl sub_08004274 b _0808DEA4 .align 2, 0 _0808DE8C: .4byte gLinkState _0808DE90: .4byte 0x00001810 _0808DE94: .4byte 0xFFFFFBFF _0808DE98: .4byte gLinkEntity _0808DE9C: .4byte gUnk_081217B8 _0808DEA0: bl sub_0805E780 _0808DEA4: ldr r1, _0808DEC0 @ =gLinkEntity ldrb r0, [r1, #0x14] lsrs r0, r0, #1 cmp r0, #2 bne _0808DEC4 adds r0, r1, #0 movs r1, #3 adds r2, r5, #0 bl sub_0806FEBC ldrh r0, [r5, #0x32] subs r0, #5 strh r0, [r5, #0x32] b _0808DECE .align 2, 0 _0808DEC0: .4byte gLinkEntity _0808DEC4: adds r0, r1, #0 movs r1, #0 adds r2, r5, #0 bl sub_0806FEBC _0808DECE: pop {r4, r5, pc} thumb_func_start sub_0808DED0 sub_0808DED0: @ 0x0808DED0 push {lr} ldr r2, _0808DEE4 @ =gUnk_081217BC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808DEE4: .4byte gUnk_081217BC thumb_func_start sub_0808DEE8 sub_0808DEE8: @ 0x0808DEE8 push {r4, r5, lr} adds r5, r0, #0 movs r4, #0 movs r0, #1 strb r0, [r5, #0xc] ldrb r1, [r5, #0x10] movs r0, #0x20 orrs r0, r1 strb r0, [r5, #0x10] adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] ldr r3, _0808DF74 @ =gLinkEntity ldrb r1, [r3, #0x1b] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r5, #0x1b] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r5, #0x1b] ldrb r0, [r3, #0x14] lsrs r0, r0, #1 strb r0, [r5, #0x14] adds r0, #1 movs r1, #3 ands r0, r1 lsls r0, r0, #3 strb r0, [r5, #0x15] movs r3, #6 movs r0, #6 strb r0, [r5, #0xf] movs r0, #0xa0 lsls r0, r0, #1 strh r0, [r5, #0x24] adds r1, r5, #0 adds r1, #0x60 movs r0, #0x3c strh r0, [r1] ldrb r1, [r5, #0x1a] movs r2, #0x10 rsbs r2, r2, #0 adds r0, r2, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r5, #0x1a] adds r0, r5, #0 adds r0, #0x72 strh r4, [r0] subs r0, #6 strh r4, [r0] ldrb r0, [r5, #0x11] ands r2, r0 orrs r2, r3 strb r2, [r5, #0x11] adds r0, r5, #0 movs r1, #7 bl UpdateSprite ldrb r0, [r5, #0xb] cmp r0, #0 beq _0808DF78 movs r0, #0x28 strb r0, [r5, #0xe] b _0808DFAA .align 2, 0 _0808DF74: .4byte gLinkEntity _0808DF78: ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] ldr r0, _0808DF9C @ =gLinkState adds r0, #0xac ldrh r1, [r0] movs r0, #0x80 lsls r0, r0, #2 ands r0, r1 cmp r0, #0 beq _0808DFA0 movs r0, #0x28 b _0808DFA2 .align 2, 0 _0808DF9C: .4byte gLinkState _0808DFA0: movs r0, #0x50 _0808DFA2: strb r0, [r5, #0xe] adds r0, r5, #0 bl sub_0808DFAC _0808DFAA: pop {r4, r5, pc} thumb_func_start sub_0808DFAC sub_0808DFAC: @ 0x0808DFAC push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #0 beq _0808E00E ldr r1, _0808DFF0 @ =gLinkState adds r0, r1, #0 adds r0, #0x21 ldrb r0, [r0] cmp r0, #0 beq _0808DFCC ldrb r1, [r1, #4] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808DFD0 _0808DFCC: bl sub_0805E780 _0808DFD0: ldr r0, _0808DFF0 @ =gLinkState adds r2, r0, #0 adds r2, #0x21 ldrb r0, [r2] cmp r0, #0x4f bls _0808DFF8 ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #1 orrs r1, r0 strb r1, [r4, #0x18] ldrb r6, [r2] ldr r7, _0808DFF4 @ =gUnk_081217D8 b _0808E038 .align 2, 0 _0808DFF0: .4byte gLinkState _0808DFF4: .4byte gUnk_081217D8 _0808DFF8: cmp r0, #0 beq _0808E008 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] b _0808E1BA _0808E008: bl sub_0805E780 b _0808E038 _0808E00E: ldr r5, _0808E02C @ =gLinkState ldrb r0, [r5, #4] cmp r0, #0 bne _0808E01A bl sub_0805E780 _0808E01A: ldrb r1, [r5, #0x1b] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808E034 ldrb r6, [r5, #0x1b] ldr r7, _0808E030 @ =gUnk_081217D0 b _0808E038 .align 2, 0 _0808E02C: .4byte gLinkState _0808E030: .4byte gUnk_081217D0 _0808E034: bl sub_0805E780 _0808E038: cmp r6, #0 bne _0808E03E b _0808E1B6 _0808E03E: adds r0, r4, #0 bl sub_08004274 ldrb r0, [r4, #0xe] cmp r0, #0 beq _0808E084 subs r0, #1 strb r0, [r4, #0xe] movs r2, #3 ldrb r0, [r4, #0xb] cmp r0, #0 bne _0808E068 ldr r0, _0808E080 @ =gLinkState adds r0, #0xac ldrh r1, [r0] movs r0, #0x80 lsls r0, r0, #2 ands r0, r1 cmp r0, #0 bne _0808E068 movs r2, #7 _0808E068: ldrb r0, [r4, #0xe] ands r0, r2 adds r5, r4, #0 adds r5, #0x6c adds r6, r4, #0 adds r6, #0x38 cmp r0, #0 bne _0808E0E4 ldrh r0, [r5] adds r0, #1 strh r0, [r5] b _0808E0E4 .align 2, 0 _0808E080: .4byte gLinkState _0808E084: adds r5, r4, #0 adds r5, #0x72 ldrh r0, [r5] cmp r0, #0 beq _0808E0BC ldr r0, _0808E0B8 @ =gUnk_030010A0 ldr r1, [r0] movs r0, #0x1f ands r1, r0 subs r5, #6 adds r6, r4, #0 adds r6, #0x38 cmp r1, #0 bne _0808E0E4 adds r0, r4, #0 movs r1, #7 movs r2, #0 bl CreateFx cmp r0, #0 beq _0808E0E4 ldrb r1, [r6] adds r0, #0x38 strb r1, [r0] b _0808E0E4 .align 2, 0 _0808E0B8: .4byte gUnk_030010A0 _0808E0BC: ldr r0, _0808E140 @ =0x00000115 bl sub_08004488 adds r0, r4, #0 movs r1, #0x12 movs r2, #0 bl CreateFx adds r6, r4, #0 adds r6, #0x38 cmp r0, #0 beq _0808E0DA ldrb r1, [r6] adds r0, #0x38 strb r1, [r0] _0808E0DA: ldrh r0, [r5] adds r0, #1 strh r0, [r5] adds r5, r4, #0 adds r5, #0x6c _0808E0E4: ldr r2, _0808E144 @ =gLinkEntity ldrb r1, [r2, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r3, [r4, #0x19] movs r0, #0x3f ands r0, r3 orrs r0, r1 strb r0, [r4, #0x19] ldrb r0, [r4, #0x14] lsls r0, r0, #1 adds r0, r7, r0 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r2, #0x2e] adds r0, r0, r1 strh r0, [r4, #0x2e] ldrb r0, [r4, #0x14] lsls r0, r0, #1 adds r0, r0, r7 ldrb r0, [r0, #1] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r2, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] ldrh r0, [r2, #0x36] strh r0, [r4, #0x36] adds r2, #0x38 ldrb r0, [r2] strb r0, [r6] ldrb r0, [r4, #0x14] cmp r0, #1 beq _0808E148 cmp r0, #1 ble _0808E136 cmp r0, #2 beq _0808E150 cmp r0, #3 beq _0808E15A _0808E136: ldrh r0, [r4, #0x32] ldrh r1, [r5] subs r0, r0, r1 strh r0, [r4, #0x32] b _0808E162 .align 2, 0 _0808E140: .4byte 0x00000115 _0808E144: .4byte gLinkEntity _0808E148: ldrh r0, [r5] ldrh r1, [r4, #0x2e] adds r0, r0, r1 b _0808E160 _0808E150: ldrh r0, [r5] ldrh r1, [r4, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] b _0808E162 _0808E15A: ldrh r0, [r4, #0x2e] ldrh r1, [r5] subs r0, r0, r1 _0808E160: strh r0, [r4, #0x2e] _0808E162: ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _0808E17A movs r0, #6 strb r0, [r4, #0xf] ldrb r0, [r4, #0x15] movs r1, #0x10 eors r0, r1 strb r0, [r4, #0x15] _0808E17A: adds r0, r4, #0 bl sub_0806F69C ldrb r0, [r4, #0xb] cmp r0, #0 bne _0808E1BA ldr r0, _0808E1AC @ =gLinkState ldrb r1, [r0, #0x1b] movs r0, #0x40 ands r0, r1 cmp r0, #0 beq _0808E1BA ldrb r0, [r4, #0x10] movs r1, #0xdf ands r1, r0 strb r1, [r4, #0x10] movs r0, #6 bl GetInventoryValue cmp r0, #1 bne _0808E1B0 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] b _0808E1BA .align 2, 0 _0808E1AC: .4byte gLinkState _0808E1B0: bl sub_0805E780 b _0808E1BA _0808E1B6: bl sub_0805E780 _0808E1BA: pop {r4, r5, r6, r7, pc} thumb_func_start sub_0808E1BC sub_0808E1BC: @ 0x0808E1BC push {r4, lr} adds r4, r0, #0 bl sub_08079BD8 ldrb r0, [r4, #0xc] adds r0, #1 movs r2, #0 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] ldr r0, _0808E204 @ =gLinkEntity ldrb r0, [r0, #0x14] strb r0, [r4, #0x14] adds r0, r4, #0 adds r0, #0x60 strh r2, [r0] ldrb r1, [r4, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r4, #0x1a] movs r0, #0xaf strh r0, [r4, #0x12] ldrb r1, [r4, #0x14] lsrs r1, r1, #1 adds r0, r4, #0 bl UpdateSprite pop {r4, pc} .align 2, 0 _0808E204: .4byte gLinkEntity thumb_func_start sub_0808E208 sub_0808E208: @ 0x0808E208 push {r4, lr} adds r4, r0, #0 bl sub_08079BD8 adds r0, r4, #0 bl sub_08004274 ldr r0, _0808E240 @ =gLinkState ldrb r0, [r0, #0x1b] cmp r0, #0 beq _0808E248 ldr r0, _0808E244 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #3 ands r0, r1 cmp r0, #0 bne _0808E24C ldrb r2, [r4, #0x1a] lsls r1, r2, #0x1c lsrs r1, r1, #0x1c movs r0, #4 eors r1, r0 subs r0, #0x14 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x1a] b _0808E24C .align 2, 0 _0808E240: .4byte gLinkState _0808E244: .4byte gUnk_030010A0 _0808E248: bl sub_0805E780 _0808E24C: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808E260 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] _0808E260: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808E264 sub_0808E264: @ 0x0808E264 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r4, #0x5a ldrb r1, [r4] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808E27C bl sub_0805E780 _0808E27C: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808E280 sub_0808E280: @ 0x0808E280 push {lr} ldr r2, _0808E294 @ =gUnk_08121B8C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808E294: .4byte gUnk_08121B8C thumb_func_start sub_0808E298 sub_0808E298: @ 0x0808E298 push {r4, r5, r6, lr} adds r4, r0, #0 adds r0, #0x38 movs r1, #2 strb r1, [r0] movs r0, #1 strb r0, [r4, #0xc] movs r5, #0 movs r6, #0 adds r0, r4, #0 bl sub_080002A0 adds r1, r0, #0 movs r0, #0xd1 lsls r0, r0, #2 cmp r1, r0 beq _0808E2DA cmp r1, r0 bhi _0808E2C6 subs r0, #1 cmp r1, r0 beq _0808E2D8 b _0808E2E2 _0808E2C6: ldr r0, _0808E2D4 @ =0x00000345 cmp r1, r0 beq _0808E2DE adds r0, #1 cmp r1, r0 beq _0808E2E6 b _0808E2E2 .align 2, 0 _0808E2D4: .4byte 0x00000345 _0808E2D8: movs r5, #0x10 _0808E2DA: movs r6, #0x10 b _0808E2E6 _0808E2DE: movs r5, #0x10 b _0808E2E6 _0808E2E2: bl sub_0805E780 _0808E2E6: ldrh r0, [r4, #0x2e] adds r0, r0, r5 movs r2, #0x10 rsbs r2, r2, #0 adds r1, r2, #0 ands r0, r1 strh r0, [r4, #0x2e] ldrh r0, [r4, #0x32] adds r0, r0, r6 ands r0, r1 strh r0, [r4, #0x32] adds r0, r4, #0 movs r1, #0 bl UpdateSprite ldr r1, _0808E314 @ =0x00000347 adds r0, r4, #0 bl sub_0808E354 adds r0, r4, #0 bl sub_0808E318 pop {r4, r5, r6, pc} .align 2, 0 _0808E314: .4byte 0x00000347 thumb_func_start sub_0808E318 sub_0808E318: @ 0x0808E318 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808E340 ldr r1, _0808E33C @ =0x00000343 adds r0, r4, #0 bl sub_0808E354 bl sub_0805E780 b _0808E34E .align 2, 0 _0808E33C: .4byte 0x00000343 _0808E340: movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808E34E ldr r0, _0808E350 @ =0x0000018B bl sub_08004488 _0808E34E: pop {r4, pc} .align 2, 0 _0808E350: .4byte 0x0000018B thumb_func_start sub_0808E354 sub_0808E354: @ 0x0808E354 push {r4, r5, r6, lr} mov r6, r8 push {r6} adds r6, r0, #0 lsls r1, r1, #0x10 mov r8, r1 mov r0, r8 lsrs r0, r0, #0x10 mov r8, r0 movs r2, #0x2e ldrsh r1, [r6, r2] ldr r5, _0808E410 @ =gRoomControls ldrh r0, [r5, #6] adds r0, #0x10 subs r1, r1, r0 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r3, #0x32 ldrsh r0, [r6, r3] ldrh r2, [r5, #8] adds r2, #0x10 subs r0, r0, r2 asrs r0, r0, #4 ands r0, r4 lsls r0, r0, #6 orrs r1, r0 mov r0, r8 movs r2, #2 bl sub_0807B7D8 mov r0, r8 adds r0, #1 movs r2, #0x2e ldrsh r1, [r6, r2] ldrh r2, [r5, #6] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r4 movs r3, #0x32 ldrsh r2, [r6, r3] ldrh r3, [r5, #8] adds r3, #0x10 subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 movs r2, #2 bl sub_0807B7D8 mov r0, r8 adds r0, #2 movs r2, #0x2e ldrsh r1, [r6, r2] ldrh r2, [r5, #6] adds r2, #0x10 subs r1, r1, r2 asrs r1, r1, #4 ands r1, r4 movs r3, #0x32 ldrsh r2, [r6, r3] ldrh r3, [r5, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 movs r2, #2 bl sub_0807B7D8 movs r0, #3 add r8, r0 movs r2, #0x2e ldrsh r1, [r6, r2] ldrh r0, [r5, #6] subs r1, r1, r0 asrs r1, r1, #4 ands r1, r4 movs r3, #0x32 ldrsh r0, [r6, r3] ldrh r2, [r5, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r4 lsls r0, r0, #6 orrs r1, r0 mov r0, r8 movs r2, #2 bl sub_0807B7D8 pop {r3} mov r8, r3 pop {r4, r5, r6, pc} .align 2, 0 _0808E410: .4byte gRoomControls thumb_func_start sub_0808E414 sub_0808E414: @ 0x0808E414 push {lr} ldr r2, _0808E428 @ =gUnk_08121BD8 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808E428: .4byte gUnk_08121BD8 thumb_func_start sub_0808E42C sub_0808E42C: @ 0x0808E42C push {lr} movs r1, #1 strb r1, [r0, #0xc] ldrb r2, [r0, #0x11] subs r1, #0x11 ands r1, r2 movs r2, #6 orrs r1, r2 strb r1, [r0, #0x11] ldrb r1, [r0, #0xa] bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_0808E448 sub_0808E448: @ 0x0808E448 push {r4, lr} adds r4, r0, #0 movs r0, #0x10 bl sub_0805436C cmp r0, #1 bls _0808E45A bl sub_0805E780 _0808E45A: adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r0, [r0] cmp r0, #1 beq _0808E472 cmp r0, #0x80 bne _0808E486 bl sub_0805E780 _0808E472: ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] b _0808E494 _0808E486: ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #1 orrs r1, r0 strb r1, [r4, #0x18] _0808E494: ldrb r0, [r4, #0xa] cmp r0, #0 bne _0808E4A2 ldr r0, [r4, #0x34] ldr r1, _0808E4A4 @ =0xFFFF8000 adds r0, r0, r1 str r0, [r4, #0x34] _0808E4A2: pop {r4, pc} .align 2, 0 _0808E4A4: .4byte 0xFFFF8000 thumb_func_start sub_0808E4A8 sub_0808E4A8: @ 0x0808E4A8 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r2, [r4, #0xa] lsls r1, r2, #1 ldr r0, _0808E540 @ =gUnk_08121C40 adds r3, r1, r0 ldrb r6, [r4, #0xc] cmp r6, #0 bne _0808E54C movs r5, #1 strb r5, [r4, #0xc] movs r2, #0 ldrb r0, [r4, #0xb] cmp r0, #0 bne _0808E4C8 movs r2, #1 _0808E4C8: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r0, [r4, #0xa] strb r0, [r4, #0x1e] adds r0, r4, #0 adds r0, #0x38 strb r5, [r0] ldrb r1, [r3] lsls r1, r1, #6 ldrb r2, [r4, #0x19] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] ldrb r0, [r3, #1] adds r3, r4, #0 adds r3, #0x29 movs r1, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] adds r0, r4, #0 adds r0, #0x76 strh r6, [r0] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _0808E544 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r5, #0x32 ldrsh r0, [r4, r5] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r0, r4, #0 adds r0, #0x74 strh r1, [r0] adds r0, r4, #0 bl sub_0808E55C ldr r1, _0808E548 @ =sub_0808E55C adds r0, r4, #0 movs r2, #0 bl sub_08052D74 b _0808E55A .align 2, 0 _0808E540: .4byte gUnk_08121C40 _0808E544: .4byte gRoomControls _0808E548: .4byte sub_0808E55C _0808E54C: movs r0, #1 ands r2, r0 cmp r2, #0 bne _0808E55A adds r0, r4, #0 bl sub_0808E670 _0808E55A: pop {r4, r5, r6, pc} thumb_func_start sub_0808E55C sub_0808E55C: @ 0x0808E55C push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} mov r8, r0 ldrb r0, [r0, #0xa] cmp r0, #1 beq _0808E614 cmp r0, #1 bgt _0808E576 cmp r0, #0 beq _0808E57A b _0808E63A _0808E576: cmp r0, #2 bne _0808E63A _0808E57A: mov r0, r8 adds r0, #0x74 ldrh r6, [r0] ldr r0, _0808E5FC @ =0xFFFFFEFF adds r7, r6, r0 ldr r4, _0808E600 @ =0x0000408F mov r5, r8 adds r5, #0x38 ldrb r2, [r5] adds r0, r4, #0 adds r1, r7, #0 bl UpdateCollisionLayer ldr r2, _0808E604 @ =0xFFFFFF00 adds r1, r6, r2 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer ldr r0, _0808E608 @ =0x0000406C ldr r2, _0808E60C @ =0xFFFFFEFE adds r1, r6, r2 ldrb r2, [r5] bl UpdateCollisionLayer ldr r0, _0808E610 @ =0x0000406D adds r1, r6, #0 subs r1, #0xff ldrb r2, [r5] bl UpdateCollisionLayer mov r1, r8 ldrb r0, [r1, #0xa] movs r2, #6 mov sb, r2 cmp r0, #0 beq _0808E63A movs r0, #4 mov sb, r0 subs r4, #0x1d adds r1, r6, #0 adds r1, #0x3f ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x40 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x7f ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x80 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer b _0808E63A .align 2, 0 _0808E5FC: .4byte 0xFFFFFEFF _0808E600: .4byte 0x0000408F _0808E604: .4byte 0xFFFFFF00 _0808E608: .4byte 0x0000406C _0808E60C: .4byte 0xFFFFFEFE _0808E610: .4byte 0x0000406D _0808E614: mov r0, r8 adds r0, #0x74 ldrh r6, [r0] subs r7, r6, #1 ldr r5, _0808E66C @ =0x0000408E mov r4, r8 adds r4, #0x38 ldrb r2, [r4] adds r0, r5, #0 adds r1, r7, #0 bl UpdateCollisionLayer ldrb r2, [r4] adds r0, r5, #0 adds r1, r6, #0 bl UpdateCollisionLayer movs r1, #2 mov sb, r1 _0808E63A: movs r5, #0 cmp r5, sb bhs _0808E662 ldr r6, _0808E66C @ =0x0000408E mov r4, r8 adds r4, #0x38 _0808E646: adds r7, #0x40 ldrb r2, [r4] adds r0, r6, #0 adds r1, r7, #0 bl UpdateCollisionLayer adds r1, r7, #1 ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer adds r5, #1 cmp r5, sb blo _0808E646 _0808E662: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 _0808E66C: .4byte 0x0000408E thumb_func_start sub_0808E670 sub_0808E670: @ 0x0808E670 push {lr} adds r0, #0x74 ldrh r0, [r0] ldr r1, _0808E684 @ =0xFFFFFEFF adds r0, r0, r1 movs r1, #1 bl sub_080002B0 pop {pc} .align 2, 0 _0808E684: .4byte 0xFFFFFEFF thumb_func_start sub_0808E688 sub_0808E688: @ 0x0808E688 push {lr} ldr r2, _0808E69C @ =gUnk_08121C48 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808E69C: .4byte gUnk_08121C48 thumb_func_start sub_0808E6A0 sub_0808E6A0: @ 0x0808E6A0 push {r4, lr} adds r4, r0, #0 adds r0, #0x84 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0808E6B4 bl sub_0805E780 _0808E6B4: movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x62 strb r0, [r4, #0xa] ldrb r1, [r4, #0x18] subs r0, #0x66 ands r0, r1 strb r0, [r4, #0x18] ldr r0, _0808E6E0 @ =gUnk_08121C58 str r0, [r4, #0x48] adds r1, r4, #0 adds r1, #0x38 movs r2, #3 movs r0, #3 strb r0, [r1] ldrb r1, [r4, #0x11] subs r0, #0x13 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x11] pop {r4, pc} .align 2, 0 _0808E6E0: .4byte gUnk_08121C58 thumb_func_start sub_0808E6E4 sub_0808E6E4: @ 0x0808E6E4 push {r4, lr} adds r4, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0808E712 movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #6 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] ldrb r0, [r4, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 bl sub_0808E714 _0808E712: pop {r4, pc} thumb_func_start sub_0808E714 sub_0808E714: @ 0x0808E714 push {r4, lr} adds r4, r0, #0 ldrb r3, [r4, #0xf] lsls r0, r3, #3 movs r1, #0x80 lsls r1, r1, #3 subs r2, r1, r0 movs r0, #0x80 lsls r0, r0, #1 cmp r2, r0 ble _0808E73A adds r0, r3, #1 strb r0, [r4, #0xf] adds r0, r4, #0 adds r1, r2, #0 movs r3, #0 bl sub_0805EC9C b _0808E756 _0808E73A: movs r0, #3 strb r0, [r4, #0xc] adds r2, r4, #0 adds r2, #0x3c ldrb r1, [r2] movs r0, #0x10 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 bl sub_0805EC60 ldr r0, _0808E760 @ =0x00000141 bl PlaySFX _0808E756: adds r0, r4, #0 bl sub_08080CB4 pop {r4, pc} .align 2, 0 _0808E760: .4byte 0x00000141 thumb_func_start sub_0808E764 sub_0808E764: @ 0x0808E764 push {r4, lr} adds r4, r0, #0 bl sub_08080CB4 ldr r0, _0808E79C @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _0808E79A adds r0, r4, #0 bl sub_08017850 cmp r0, #0 beq _0808E79A adds r0, r4, #0 adds r0, #0x84 ldrh r0, [r0] bl sub_0807CCC8 movs r0, #0x62 movs r1, #0 movs r2, #0 bl sub_080A7C00 bl sub_0805E780 _0808E79A: pop {r4, pc} .align 2, 0 _0808E79C: .4byte gLinkState thumb_func_start sub_0808E7A0 sub_0808E7A0: @ 0x0808E7A0 push {r4, lr} adds r4, r0, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _0808E7B2 adds r0, r4, #0 bl sub_0808EFF0 _0808E7B2: ldr r1, _0808E7D4 @ =gUnk_08121C64 ldrb r0, [r4, #0xa] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0x3f bhi _0808E7D2 adds r0, r4, #0 bl sub_080042B8 _0808E7D2: pop {r4, pc} .align 2, 0 _0808E7D4: .4byte gUnk_08121C64 thumb_func_start sub_0808E7D8 sub_0808E7D8: @ 0x0808E7D8 push {lr} ldr r2, _0808E7EC @ =gUnk_08121CCC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808E7EC: .4byte gUnk_08121CCC thumb_func_start sub_0808E7F0 sub_0808E7F0: @ 0x0808E7F0 push {r4, lr} adds r4, r0, #0 movs r1, #1 movs r2, #2 bl sub_080AE008 ldrb r0, [r4, #0x1a] movs r1, #0xf orrs r0, r1 strb r0, [r4, #0x1a] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] movs r0, #0xff strb r0, [r4, #0xb] movs r0, #1 strb r0, [r4, #0xc] pop {r4, pc} thumb_func_start sub_0808E818 sub_0808E818: @ 0x0808E818 push {r4, r5, r6, lr} adds r4, r0, #0 bl sub_0808E950 cmp r0, #0 bne _0808E840 movs r1, #1 rsbs r1, r1, #0 strb r1, [r4, #0xb] adds r0, r4, #0 adds r0, #0x68 strh r1, [r0] adds r0, #2 strh r1, [r0] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] b _0808E94E _0808E840: ldr r0, _0808E8C0 @ =gUnk_02019EE0 ldrb r1, [r0, #6] ldrb r0, [r4, #0xb] adds r6, r4, #0 adds r6, #0x68 adds r5, r4, #0 adds r5, #0x70 cmp r0, r1 beq _0808E894 strb r1, [r4, #0xb] movs r0, #0x14 bl GetProgressFlag movs r2, #0x80 lsls r2, r2, #1 adds r1, r2, #0 cmp r0, #0 bne _0808E86A movs r0, #0x80 lsls r0, r0, #3 adds r1, r0, #0 _0808E86A: strh r1, [r6] movs r0, #4 strb r0, [r5] movs r0, #2 strb r0, [r4, #0x14] movs r0, #1 bl sub_0807A094 ldr r1, _0808E8C4 @ =gUnk_08133368 subs r0, #0x16 lsls r0, r0, #2 adds r0, r0, r1 ldr r0, [r0] ldr r1, _0808E8C8 @ =0x00FFFFFF ands r0, r1 ldr r1, _0808E8CC @ =gUnk_085A2E80 adds r0, r0, r1 movs r1, #0x1f movs r2, #1 bl sub_0801D754 _0808E894: ldr r0, _0808E8D0 @ =gUnk_02032EC0 ldrb r2, [r0, #2] cmp r2, #0 bne _0808E904 ldr r3, _0808E8D4 @ =gUnk_03000FF0 ldrh r1, [r3] movs r0, #0x80 lsls r0, r0, #2 ands r0, r1 cmp r0, #0 beq _0808E904 ldrh r1, [r3, #2] cmp r1, #0x20 beq _0808E8F2 cmp r1, #0x20 bgt _0808E8D8 cmp r1, #2 beq _0808E8F8 cmp r1, #0x10 beq _0808E8E6 b _0808E904 .align 2, 0 _0808E8C0: .4byte gUnk_02019EE0 _0808E8C4: .4byte gUnk_08133368 _0808E8C8: .4byte 0x00FFFFFF _0808E8CC: .4byte gUnk_085A2E80 _0808E8D0: .4byte gUnk_02032EC0 _0808E8D4: .4byte gUnk_03000FF0 _0808E8D8: cmp r1, #0x40 beq _0808E8E2 cmp r1, #0x80 beq _0808E8EC b _0808E904 _0808E8E2: strb r2, [r4, #0x14] b _0808E904 _0808E8E6: movs r0, #1 strb r0, [r4, #0x14] b _0808E904 _0808E8EC: movs r0, #2 strb r0, [r4, #0x14] b _0808E904 _0808E8F2: movs r0, #3 strb r0, [r4, #0x14] b _0808E904 _0808E8F8: ldrb r0, [r5] movs r1, #0 cmp r0, #0 bne _0808E902 movs r1, #4 _0808E902: strb r1, [r5] _0808E904: movs r2, #0 ldrb r0, [r4, #0x14] cmp r0, #3 bne _0808E90E movs r2, #1 _0808E90E: lsls r2, r2, #6 ldrb r1, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrh r0, [r6] ldrb r1, [r5] adds r0, r0, r1 ldrb r2, [r4, #0x14] adds r1, r0, r2 adds r2, r4, #0 adds r2, #0x6a ldrh r0, [r2] cmp r0, r1 beq _0808E940 strh r1, [r2] lsrs r0, r1, #8 strh r0, [r4, #0x12] lsls r1, r1, #0x18 lsrs r1, r1, #0x18 adds r0, r4, #0 bl LoadAnimation _0808E940: ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #2 orrs r1, r0 strb r1, [r4, #0x18] _0808E94E: pop {r4, r5, r6, pc} thumb_func_start sub_0808E950 sub_0808E950: @ 0x0808E950 push {lr} movs r2, #0 ldr r0, _0808E980 @ =gUnk_02032EC0 ldrb r0, [r0, #2] cmp r0, #0 beq _0808E968 cmp r0, #0 blt _0808E97C cmp r0, #7 bgt _0808E97C cmp r0, #4 blt _0808E97C _0808E968: ldr r0, _0808E984 @ =gUnk_02019EE0 adds r1, r0, #0 adds r1, #8 ldrb r0, [r0, #6] adds r1, r1, r0 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #1 bne _0808E97C movs r2, #1 _0808E97C: adds r0, r2, #0 pop {pc} .align 2, 0 _0808E980: .4byte gUnk_02032EC0 _0808E984: .4byte gUnk_02019EE0 thumb_func_start sub_0808E988 sub_0808E988: @ 0x0808E988 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xc] cmp r0, #0 bne _0808E9AA movs r0, #1 strb r0, [r5, #0xc] movs r0, #0xa1 lsls r0, r0, #1 strh r0, [r5, #0x12] movs r0, #0xff strb r0, [r5, #0xb] adds r0, r5, #0 movs r1, #1 movs r2, #3 bl sub_080AE008 _0808E9AA: bl sub_0808E950 cmp r0, #0 beq _0808E9E8 movs r4, #6 b _0808E9BC _0808E9B6: subs r4, #1 cmp r4, #0 beq _0808E9E8 _0808E9BC: adds r0, r4, #0 bl GetInventoryValue cmp r0, #0 beq _0808E9B6 cmp r4, #0 beq _0808E9E8 ldrb r0, [r5, #0xb] cmp r0, r4 beq _0808E9D8 adds r0, r5, #0 adds r1, r4, #0 bl LoadAnimation _0808E9D8: ldrb r0, [r5, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #2 orrs r1, r0 strb r1, [r5, #0x18] b _0808E9F2 _0808E9E8: ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r5, #0x18] _0808E9F2: pop {r4, r5, pc} thumb_func_start sub_0808E9F4 sub_0808E9F4: @ 0x0808E9F4 push {r4, lr} adds r4, r0, #0 bl sub_0808E950 cmp r0, #0 beq _0808EA1C ldr r0, _0808EA18 @ =gUnk_02002A40 ldrb r0, [r0, #6] cmp r0, #0 beq _0808EA1C ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #2 orrs r1, r0 strb r1, [r4, #0x18] b _0808EA26 .align 2, 0 _0808EA18: .4byte gUnk_02002A40 _0808EA1C: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] _0808EA26: pop {r4, pc} thumb_func_start sub_0808EA28 sub_0808EA28: @ 0x0808EA28 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #3 bne _0808EA56 movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] cmp r0, #1 bls _0808EA4C ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #2 orrs r1, r0 strb r1, [r4, #0x18] b _0808EA56 _0808EA4C: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] _0808EA56: ldr r2, _0808EA68 @ =gUnk_02019EE0 ldrb r1, [r4, #0xa] ldrb r0, [r2, #6] cmp r1, r0 bne _0808EA6C movs r3, #0xc movs r2, #1 b _0808EA88 .align 2, 0 _0808EA68: .4byte gUnk_02019EE0 _0808EA6C: ldr r0, _0808EA80 @ =gUnk_02032EC0 ldrb r0, [r0, #2] cmp r0, #5 bne _0808EA84 ldrb r2, [r2, #7] cmp r1, r2 bne _0808EA84 movs r3, #0xd b _0808EA86 .align 2, 0 _0808EA80: .4byte gUnk_02032EC0 _0808EA84: movs r3, #0xe _0808EA86: movs r2, #2 _0808EA88: ldrb r1, [r4, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 orrs r0, r3 strb r0, [r4, #0x1a] lsls r2, r2, #6 ldrb r1, [r4, #0x19] movs r0, #0x3f ands r0, r1 orrs r0, r2 strb r0, [r4, #0x19] adds r0, r4, #0 bl sub_0808EABC adds r0, r4, #0 bl sub_0808EF6C ldr r2, _0808EAB8 @ =gUnk_02019EE0 ldrb r1, [r2] orrs r0, r1 strb r0, [r2] pop {r4, pc} .align 2, 0 _0808EAB8: .4byte gUnk_02019EE0 thumb_func_start sub_0808EABC sub_0808EABC: @ 0x0808EABC push {r4, r5, lr} adds r5, r0, #0 movs r4, #0x48 rsbs r4, r4, #0 ldrb r1, [r5, #0xa] lsls r0, r1, #5 adds r2, r0, #0 adds r2, #0x28 movs r3, #0 ldr r0, _0808EAEC @ =gUnk_02019EE0 ldrb r0, [r0, #6] cmp r0, r1 bne _0808EAD8 movs r3, #1 _0808EAD8: ldr r0, _0808EAF0 @ =gUnk_02032EC0 ldrb r0, [r0, #2] cmp r0, #7 bhi _0808EB60 lsls r0, r0, #2 ldr r1, _0808EAF4 @ =_0808EAF8 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0808EAEC: .4byte gUnk_02019EE0 _0808EAF0: .4byte gUnk_02032EC0 _0808EAF4: .4byte _0808EAF8 _0808EAF8: @ jump table .4byte _0808EB18 @ case 0 .4byte _0808EB60 @ case 1 .4byte _0808EB56 @ case 2 .4byte _0808EB1C @ case 3 .4byte _0808EB1C @ case 4 .4byte _0808EB26 @ case 5 .4byte _0808EB1C @ case 6 .4byte _0808EB1C @ case 7 _0808EB18: movs r4, #0x18 b _0808EB68 _0808EB1C: cmp r3, #0 beq _0808EB68 movs r4, #0x2a movs r2, #0x38 b _0808EB68 _0808EB26: ldr r3, _0808EB3C @ =gUnk_02000080 adds r0, r3, #0 adds r0, #0x10 ldrb r1, [r5, #0xa] adds r0, r0, r1 ldrb r1, [r0] cmp r1, #0 bne _0808EB40 movs r4, #0x2a movs r2, #0x28 b _0808EB68 .align 2, 0 _0808EB3C: .4byte gUnk_02000080 _0808EB40: cmp r1, #0 blt _0808EB68 cmp r1, #2 bgt _0808EB68 movs r4, #0x14 movs r2, #0x90 ldrb r0, [r3, #0x16] subs r0, r0, r1 lsls r0, r0, #5 subs r2, r2, r0 b _0808EB68 _0808EB56: cmp r3, #0 beq _0808EB68 movs r4, #0x1a movs r2, #0x2a b _0808EB68 _0808EB60: cmp r3, #0 beq _0808EB68 movs r4, #8 movs r2, #0x23 _0808EB68: adds r0, r5, #0 adds r0, #0x68 strh r4, [r0] adds r0, #2 strh r2, [r0] pop {r4, r5, pc} thumb_func_start sub_0808EB74 sub_0808EB74: @ 0x0808EB74 push {r4, lr} adds r4, r0, #0 ldr r0, _0808EBA8 @ =gUnk_02019EE0 ldrb r0, [r0, #6] bl sub_0808EC80 adds r3, r0, #0 cmp r3, #0 beq _0808EBAC ldr r0, [r3, #0x2c] str r0, [r4, #0x2c] ldr r0, [r3, #0x30] str r0, [r4, #0x30] ldrb r1, [r3, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r4, #0x19] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r3, #0 adds r1, r4, #0 bl sub_0806FAD8 b _0808EBB4 .align 2, 0 _0808EBA8: .4byte gUnk_02019EE0 _0808EBAC: movs r0, #0xf0 lsls r0, r0, #8 strh r0, [r4, #0x2e] strh r0, [r4, #0x32] _0808EBB4: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808EBB8 sub_0808EBB8: @ 0x0808EBB8 push {r4, r5, r6, r7, lr} adds r7, r0, #0 ldr r0, _0808EBD0 @ =gUnk_02032EC0 ldrb r0, [r0, #2] subs r0, #2 cmp r0, #5 bhi _0808EC1C lsls r0, r0, #2 ldr r1, _0808EBD4 @ =_0808EBD8 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0808EBD0: .4byte gUnk_02032EC0 _0808EBD4: .4byte _0808EBD8 _0808EBD8: @ jump table .4byte _0808EC18 @ case 0 .4byte _0808EC1C @ case 1 .4byte _0808EBF0 @ case 2 .4byte _0808EBFC @ case 3 .4byte _0808EC00 @ case 4 .4byte _0808EC14 @ case 5 _0808EBF0: ldr r0, _0808EBF8 @ =gUnk_02000080 ldrb r0, [r0, #1] adds r1, r0, #4 b _0808EC1E .align 2, 0 _0808EBF8: .4byte gUnk_02000080 _0808EBFC: movs r1, #2 b _0808EC1E _0808EC00: ldr r0, _0808EC10 @ =gUnk_02000080 ldrb r0, [r0, #1] movs r1, #6 cmp r0, #0 bne _0808EC1E movs r1, #7 b _0808EC1E .align 2, 0 _0808EC10: .4byte gUnk_02000080 _0808EC14: movs r1, #4 b _0808EC1E _0808EC18: movs r1, #1 b _0808EC1E _0808EC1C: movs r1, #0 _0808EC1E: movs r5, #0xf0 lsls r5, r5, #8 adds r6, r5, #0 cmp r1, #1 beq _0808EC32 cmp r1, #1 blo _0808EC76 cmp r1, #2 beq _0808EC42 b _0808EC4C _0808EC32: movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] lsls r0, r0, #4 adds r5, r0, #0 adds r5, #0x18 movs r6, #0x70 b _0808EC76 _0808EC42: ldr r0, _0808EC7C @ =gUnk_02019EE0 ldrb r1, [r0, #7] cmp r1, #4 bne _0808EC4C movs r1, #7 _0808EC4C: adds r0, r1, #0 bl sub_0808EC80 adds r4, r0, #0 cmp r4, #0 beq _0808EC76 adds r1, r7, #0 bl sub_0806FAD8 ldrb r0, [r4, #0x19] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r7, #0x19] movs r1, #0x3f ands r1, r2 orrs r1, r0 strb r1, [r7, #0x19] movs r0, #0x2e ldrsh r6, [r4, r0] movs r0, #0x32 ldrsh r5, [r4, r0] _0808EC76: strh r6, [r7, #0x2e] strh r5, [r7, #0x32] pop {r4, r5, r6, r7, pc} .align 2, 0 _0808EC7C: .4byte gUnk_02019EE0 thumb_func_start sub_0808EC80 sub_0808EC80: @ 0x0808EC80 push {r4, r5, r6, lr} adds r4, r0, #0 ldr r3, _0808ECA4 @ =gUnk_03003DA0 ldr r2, [r3, #4] cmp r2, r3 beq _0808ECB6 ldr r6, _0808ECA8 @ =0x0000FFFF ldr r5, _0808ECAC @ =0x00004806 _0808EC90: ldrh r1, [r2, #8] adds r0, r6, #0 ands r0, r1 cmp r0, r5 bne _0808ECB0 ldrb r0, [r2, #0xa] cmp r4, r0 bne _0808ECB0 adds r0, r2, #0 b _0808ECB8 .align 2, 0 _0808ECA4: .4byte gUnk_03003DA0 _0808ECA8: .4byte 0x0000FFFF _0808ECAC: .4byte 0x00004806 _0808ECB0: ldr r2, [r2, #4] cmp r2, r3 bne _0808EC90 _0808ECB6: movs r0, #0 _0808ECB8: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0808ECBC sub_0808ECBC: @ 0x0808ECBC push {r4, lr} adds r3, r0, #0 ldr r0, _0808ECD8 @ =gUnk_02000080 ldrb r4, [r0, #1] ldr r0, _0808ECDC @ =gUnk_02032EC0 ldrb r0, [r0, #2] cmp r0, #5 beq _0808ECEE cmp r0, #5 bgt _0808ECE0 cmp r0, #4 beq _0808ECEA b _0808ED04 .align 2, 0 _0808ECD8: .4byte gUnk_02000080 _0808ECDC: .4byte gUnk_02032EC0 _0808ECE0: cmp r0, #6 beq _0808ECFC cmp r0, #7 beq _0808ED00 b _0808ED04 _0808ECEA: movs r0, #1 b _0808ED06 _0808ECEE: ldr r0, _0808ECF8 @ =gUnk_02019EE0 ldrb r4, [r0, #7] movs r0, #2 b _0808ED06 .align 2, 0 _0808ECF8: .4byte gUnk_02019EE0 _0808ECFC: movs r0, #3 b _0808ED06 _0808ED00: movs r0, #4 b _0808ED06 _0808ED04: movs r0, #0 _0808ED06: ldrb r2, [r3, #0xa] subs r2, #4 lsls r1, r0, #1 adds r1, r1, r0 lsls r1, r1, #2 lsls r0, r2, #1 adds r0, r0, r2 ldr r2, _0808ED3C @ =gUnk_08121CD4 adds r0, r0, r2 adds r1, r1, r0 ldrb r2, [r1, #1] adds r0, r3, #0 adds r0, #0x68 strh r2, [r0] ldrb r0, [r1, #2] adds r2, r3, #0 adds r2, #0x6a strh r0, [r2] ldrb r0, [r1] cmp r0, r4 bne _0808ED40 ldrb r0, [r3, #0x1a] movs r1, #0x10 rsbs r1, r1, #0 ands r1, r0 movs r0, #0xd b _0808ED4A .align 2, 0 _0808ED3C: .4byte gUnk_08121CD4 _0808ED40: ldrb r0, [r3, #0x1a] movs r1, #0x10 rsbs r1, r1, #0 ands r1, r0 movs r0, #0xe _0808ED4A: orrs r1, r0 strb r1, [r3, #0x1a] adds r0, r3, #0 bl sub_0808EF6C ldr r2, _0808ED60 @ =gUnk_02019EE0 ldrb r1, [r2] orrs r0, r1 strb r0, [r2] pop {r4, pc} .align 2, 0 _0808ED60: .4byte gUnk_02019EE0 thumb_func_start sub_0808ED64 sub_0808ED64: @ 0x0808ED64 push {lr} adds r2, r0, #0 movs r3, #0xff ldr r0, _0808ED90 @ =gUnk_02032EC0 ldrb r0, [r0, #2] cmp r0, #1 bne _0808ED8A ldr r1, _0808ED94 @ =gUnk_02000080 ldrb r0, [r1, #0x11] cmp r0, #5 beq _0808ED8A ldrb r0, [r1, #0x10] lsls r0, r0, #4 adds r0, #0x1c strh r0, [r2, #0x2e] ldrb r0, [r1, #0x11] lsls r0, r0, #4 adds r3, r0, #0 adds r3, #0x3a _0808ED8A: strh r3, [r2, #0x32] pop {pc} .align 2, 0 _0808ED90: .4byte gUnk_02032EC0 _0808ED94: .4byte gUnk_02000080 thumb_func_start sub_0808ED98 sub_0808ED98: @ 0x0808ED98 push {lr} adds r3, r0, #0 ldr r0, _0808EDB4 @ =gUnk_02032EC0 ldrb r0, [r0, #2] cmp r0, #1 beq _0808EDB8 adds r1, r3, #0 adds r1, #0x68 movs r0, #0x1b strh r0, [r1] movs r1, #0xa rsbs r1, r1, #0 b _0808EDCE .align 2, 0 _0808EDB4: .4byte gUnk_02032EC0 _0808EDB8: ldr r0, _0808EDF8 @ =gUnk_02000080 ldrb r0, [r0, #0x13] cmp r0, #5 bls _0808EDC2 movs r0, #5 _0808EDC2: lsls r0, r0, #3 adds r0, #0x1b adds r1, r3, #0 adds r1, #0x68 strh r0, [r1] movs r1, #0x18 _0808EDCE: strh r1, [r3, #0x32] adds r0, r3, #0 adds r0, #0x6a strh r1, [r0] ldrb r0, [r3, #0xf] adds r0, #1 strb r0, [r3, #0xf] ldr r2, _0808EDFC @ =gUnk_08121D10 ldrb r0, [r3, #0xf] lsrs r0, r0, #2 movs r1, #7 ands r0, r1 adds r0, r0, r2 ldrb r0, [r0] adds r1, r3, #0 adds r1, #0x63 strb r0, [r1] adds r0, r3, #0 bl sub_0808EF6C pop {pc} .align 2, 0 _0808EDF8: .4byte gUnk_02000080 _0808EDFC: .4byte gUnk_08121D10 thumb_func_start sub_0808EE00 sub_0808EE00: @ 0x0808EE00 push {r4, r5, lr} adds r4, r0, #0 movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] rsbs r2, r0, #0 orrs r2, r0 lsrs r2, r2, #0x1f ldrb r0, [r4, #0xa] adds r5, r0, #0 subs r5, #0xa ldr r1, _0808EE48 @ =gUnk_08121D38 lsls r0, r2, #3 adds r0, r5, r0 adds r0, r0, r1 ldrb r0, [r0] strb r0, [r4, #0x1e] ldr r3, _0808EE4C @ =gUnk_08121D18 lsls r0, r5, #1 lsls r1, r2, #4 adds r0, r0, r1 adds r0, r0, r3 ldrh r1, [r0] strh r1, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x68 strh r1, [r0] subs r5, r5, r2 ldr r0, _0808EE50 @ =gUnk_02032EC0 ldrb r0, [r0, #2] cmp r0, #1 beq _0808EE54 movs r5, #0x80 movs r1, #0xb0 b _0808EE56 .align 2, 0 _0808EE48: .4byte gUnk_08121D38 _0808EE4C: .4byte gUnk_08121D18 _0808EE50: .4byte gUnk_02032EC0 _0808EE54: movs r1, #0x8c _0808EE56: adds r0, r4, #0 adds r0, #0x6a strh r1, [r0] ldr r1, _0808EE8C @ =gUnk_02000080 ldrb r0, [r1, #0x11] movs r2, #9 cmp r0, #5 bne _0808EE6E ldrb r1, [r1, #0x12] cmp r5, r1 bne _0808EE6E movs r2, #0xb _0808EE6E: ldrb r1, [r4, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x1a] adds r0, r4, #0 bl sub_0808EF6C ldr r2, _0808EE90 @ =gUnk_02019EE0 ldrb r1, [r2] orrs r0, r1 strb r0, [r2] pop {r4, r5, pc} .align 2, 0 _0808EE8C: .4byte gUnk_02000080 _0808EE90: .4byte gUnk_02019EE0 thumb_func_start nullsub_522 nullsub_522: @ 0x0808EE94 bx lr .align 2, 0 thumb_func_start sub_0808EE98 sub_0808EE98: @ 0x0808EE98 push {lr} adds r3, r0, #0 ldr r0, _0808EEBC @ =gUnk_02032EC0 ldrb r1, [r0, #2] strb r1, [r3, #0xe] ldr r2, _0808EEC0 @ =gUnk_08121D48 ldrb r0, [r3, #0xe] adds r0, r0, r2 ldrb r0, [r0] strb r0, [r3, #0x1e] lsls r1, r1, #0x18 lsrs r1, r1, #0x18 cmp r1, #2 beq _0808EEC4 adds r1, r3, #0 adds r1, #0x68 movs r0, #0x60 b _0808EECA .align 2, 0 _0808EEBC: .4byte gUnk_02032EC0 _0808EEC0: .4byte gUnk_08121D48 _0808EEC4: adds r1, r3, #0 adds r1, #0x68 ldr r0, _0808EED4 @ =0x0000FFA0 _0808EECA: strh r0, [r1] adds r0, r3, #0 bl sub_0808EF6C pop {pc} .align 2, 0 _0808EED4: .4byte 0x0000FFA0 thumb_func_start sub_0808EED8 sub_0808EED8: @ 0x0808EED8 push {lr} adds r2, r0, #0 ldr r0, _0808EEF0 @ =gUnk_02032EC0 ldrb r0, [r0, #2] cmp r0, #3 beq _0808EEF4 ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2, #0x18] b _0808EF1E .align 2, 0 _0808EEF0: .4byte gUnk_02032EC0 _0808EEF4: ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #2 orrs r0, r1 strb r0, [r2, #0x18] ldrb r1, [r2, #0xa] subs r1, #0x13 ldr r0, _0808EF20 @ =gUnk_02000080 ldrb r0, [r0, #1] movs r3, #3 cmp r0, r1 bne _0808EF12 movs r3, #4 _0808EF12: ldrb r1, [r2, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 orrs r0, r3 strb r0, [r2, #0x1a] _0808EF1E: pop {pc} .align 2, 0 _0808EF20: .4byte gUnk_02000080 thumb_func_start sub_0808EF24 sub_0808EF24: @ 0x0808EF24 push {lr} adds r2, r0, #0 ldr r0, _0808EF3C @ =gUnk_02032EC0 ldrb r0, [r0, #2] cmp r0, #3 beq _0808EF40 ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2, #0x18] b _0808EF68 .align 2, 0 _0808EF3C: .4byte gUnk_02032EC0 _0808EF40: ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #2 orrs r0, r1 strb r0, [r2, #0x18] ldrb r0, [r2, #0xa] cmp r0, #0x15 bne _0808EF5C movs r0, #0x80 lsls r0, r0, #0x12 ldrb r1, [r0, #5] b _0808EF62 _0808EF5C: movs r0, #0x80 lsls r0, r0, #0x12 ldrb r1, [r0, #6] _0808EF62: ldrb r0, [r2, #0x1f] adds r0, r0, r1 strb r0, [r2, #0x1e] _0808EF68: pop {pc} .align 2, 0 thumb_func_start sub_0808EF6C sub_0808EF6C: @ 0x0808EF6C push {r4, r5, r6, lr} adds r5, r0, #0 adds r0, #0x68 movs r2, #0 ldrsh r1, [r0, r2] movs r2, #0x2e ldrsh r0, [r5, r2] subs r6, r1, r0 adds r0, r6, #0 cmp r6, #0 bge _0808EF84 rsbs r0, r6, #0 _0808EF84: cmp r0, #1 bhi _0808EF8E lsls r0, r1, #0x10 str r0, [r5, #0x2c] movs r6, #0 _0808EF8E: adds r0, r5, #0 adds r0, #0x6a movs r2, #0 ldrsh r1, [r0, r2] movs r2, #0x32 ldrsh r0, [r5, r2] subs r4, r1, r0 adds r0, r4, #0 cmp r4, #0 bge _0808EFA4 rsbs r0, r4, #0 _0808EFA4: cmp r0, #1 bhi _0808EFAE lsls r0, r1, #0x10 str r0, [r5, #0x30] movs r4, #0 _0808EFAE: adds r0, r6, #0 orrs r0, r4 cmp r0, #0 bne _0808EFBA movs r0, #0 b _0808EFEC _0808EFBA: adds r0, r6, #0 adds r1, r4, #0 bl sub_080041EC adds r1, r0, #0 adds r0, #0x80 lsls r1, r1, #4 adds r1, r0, r1 adds r0, r5, #0 adds r0, #0x6c ldrh r0, [r0] cmp r0, r1 bge _0808EFD6 adds r1, r0, #0 _0808EFD6: strh r1, [r5, #0x24] adds r0, r6, #0 adds r1, r4, #0 bl sub_080045DA lsrs r0, r0, #3 strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_0806F69C movs r0, #1 _0808EFEC: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0808EFF0 sub_0808EFF0: @ 0x0808EFF0 push {r4, r5, lr} mov ip, r0 ldrb r1, [r0, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #2 orrs r0, r1 mov r1, ip strb r0, [r1, #0x18] movs r0, #0x80 lsls r0, r0, #3 strh r0, [r1, #0x24] adds r1, #0x45 movs r0, #1 strb r0, [r1] movs r0, #0xff mov r3, ip strb r0, [r3, #0x1e] adds r1, #0x13 movs r0, #1 rsbs r0, r0, #0 strb r0, [r1] ldrb r4, [r3, #0xa] lsls r4, r4, #3 ldr r0, _0808F094 @ =gUnk_08121D54 adds r4, r4, r0 ldrh r0, [r4, #2] strh r0, [r3, #0x2e] ldrh r1, [r4, #2] mov r0, ip adds r0, #0x68 strh r1, [r0] ldrh r0, [r4, #4] strh r0, [r3, #0x32] ldrh r0, [r4, #4] mov r1, ip adds r1, #0x6a strh r0, [r1] ldrb r1, [r4, #6] lsls r1, r1, #0x1d lsrs r1, r1, #0x17 ldrb r3, [r3, #0x19] movs r2, #0x3f adds r0, r2, #0 ands r0, r3 orrs r0, r1 mov r1, ip strb r0, [r1, #0x19] ldrb r1, [r4, #6] lsls r1, r1, #0x1a mov r5, ip adds r5, #0x29 lsrs r1, r1, #0x1d ldrb r3, [r5] movs r0, #8 rsbs r0, r0, #0 ands r0, r3 orrs r0, r1 strb r0, [r5] ldrb r0, [r4, #6] lsrs r0, r0, #6 lsls r0, r0, #6 mov r3, ip ldrb r1, [r3, #0x1b] ands r2, r1 orrs r2, r0 strb r2, [r3, #0x1b] ldrh r1, [r4] mov r0, ip adds r0, #0x6c strh r1, [r0] ldrb r1, [r4, #7] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808F098 movs r0, #0x7f ands r1, r0 strb r1, [r3, #0x1e] strb r1, [r3, #0x1f] b _0808F09E .align 2, 0 _0808F094: .4byte gUnk_08121D54 _0808F098: mov r0, ip bl LoadAnimation _0808F09E: pop {r4, r5, pc} thumb_func_start sub_0808F0A0 sub_0808F0A0: @ 0x0808F0A0 push {lr} ldr r2, _0808F0B4 @ =gUnk_08121E5C ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808F0B4: .4byte gUnk_08121E5C thumb_func_start sub_0808F0B8 sub_0808F0B8: @ 0x0808F0B8 push {lr} ldr r2, _0808F0CC @ =gUnk_08121E88 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808F0CC: .4byte gUnk_08121E88 thumb_func_start sub_0808F0D0 sub_0808F0D0: @ 0x0808F0D0 push {r4, r5, r6, lr} adds r5, r0, #0 movs r1, #0x49 movs r2, #2 movs r3, #0 bl CreateObjectWithParent str r0, [r5, #0x54] cmp r0, #0 bne _0808F0E8 bl sub_0805E780 _0808F0E8: movs r6, #1 strb r6, [r5, #0xc] ldr r0, _0808F148 @ =0x0000FF40 strh r0, [r5, #0x36] bl Random adds r4, r0, #0 movs r0, #0x3f ands r4, r0 bl Random ands r0, r6 cmp r0, #0 beq _0808F106 rsbs r4, r4, #0 _0808F106: ldr r0, [r5, #0x50] ldrh r0, [r0, #0x2e] adds r0, r0, r4 strh r0, [r5, #0x2e] bl Random adds r4, r0, #0 movs r0, #0x1f ands r4, r0 bl Random ands r0, r6 cmp r0, #0 beq _0808F124 rsbs r4, r4, #0 _0808F124: ldr r0, [r5, #0x50] ldrh r0, [r0, #0x32] adds r0, r0, r4 strh r0, [r5, #0x32] movs r0, #0x90 lsls r0, r0, #2 str r0, [r5, #0x74] movs r0, #0xa0 lsls r0, r0, #1 str r0, [r5, #0x78] adds r0, r5, #0 movs r1, #3 bl UpdateSprite adds r0, r5, #0 bl sub_0808F14C pop {r4, r5, r6, pc} .align 2, 0 _0808F148: .4byte 0x0000FF40 thumb_func_start sub_0808F14C sub_0808F14C: @ 0x0808F14C push {r4, lr} adds r4, r0, #0 bl sub_0808F2B0 movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _0808F16E ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0x84 bl PlaySFX _0808F16E: pop {r4, pc} thumb_func_start sub_0808F170 sub_0808F170: @ 0x0808F170 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x74] subs r0, #0x20 str r0, [r4, #0x74] ldr r1, [r4, #0x78] adds r1, #0x20 str r1, [r4, #0x78] adds r0, r4, #0 movs r2, #8 movs r3, #2 bl sub_0806FCF4 ldr r1, [r4, #0x78] ldr r0, _0808F1A0 @ =0x000001FF cmp r1, r0 bls _0808F198 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] _0808F198: adds r0, r4, #0 bl sub_0808F2B0 pop {r4, pc} .align 2, 0 _0808F1A0: .4byte 0x000001FF thumb_func_start sub_0808F1A4 sub_0808F1A4: @ 0x0808F1A4 push {r4, lr} adds r4, r0, #0 ldr r1, [r4, #0x78] adds r1, #0x10 str r1, [r4, #0x78] ldr r0, [r4, #0x74] adds r0, #0x10 str r0, [r4, #0x74] adds r0, r4, #0 movs r2, #8 movs r3, #2 bl sub_0806FCF4 ldr r1, [r4, #0x78] ldr r0, _0808F1D4 @ =0x000003FF cmp r1, r0 bls _0808F1D8 ldr r1, [r4, #0x54] movs r0, #0xff strb r0, [r1, #0xc] bl sub_0805E780 b _0808F1DE .align 2, 0 _0808F1D4: .4byte 0x000003FF _0808F1D8: adds r0, r4, #0 bl sub_0808F2B0 _0808F1DE: pop {r4, pc} thumb_func_start sub_0808F1E0 sub_0808F1E0: @ 0x0808F1E0 push {lr} ldr r2, _0808F1F4 @ =gUnk_08121E98 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808F1F4: .4byte gUnk_08121E98 thumb_func_start sub_0808F1F8 sub_0808F1F8: @ 0x0808F1F8 push {r4, lr} adds r4, r0, #0 ldrb r2, [r4, #0x19] movs r0, #3 orrs r2, r0 strb r2, [r4, #0x19] ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] ldr r3, [r4, #0x50] ldrb r1, [r3, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 movs r0, #0x3f ands r2, r0 orrs r2, r1 strb r2, [r4, #0x19] ldrb r1, [r3, #0x1b] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r4, #0x1b] ands r0, r2 orrs r0, r1 strb r0, [r4, #0x1b] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 movs r1, #1 bl UpdateSprite adds r0, r4, #0 bl sub_0808F244 pop {r4, pc} thumb_func_start sub_0808F244 sub_0808F244: @ 0x0808F244 push {r4, lr} adds r4, r0, #0 ldr r3, [r4, #0x50] ldrb r1, [r3, #0x18] lsls r1, r1, #0x1e lsrs r1, r1, #0x1e ldrb r2, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] ldrh r0, [r3, #0x32] adds r0, #3 movs r2, #0 strh r0, [r4, #0x32] ldr r1, [r4, #0x54] adds r0, r1, #0 adds r0, #0x62 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r1, #0x2e] adds r0, r0, r1 strh r0, [r4, #0x2e] str r2, [r4, #0x34] movs r0, #0x36 ldrsh r1, [r3, r0] movs r0, #0x80 subs r0, r0, r1 str r0, [r4, #0x74] movs r0, #0x36 ldrsh r1, [r3, r0] movs r0, #0x80 lsls r0, r0, #1 subs r0, r0, r1 str r0, [r4, #0x78] adds r3, #0x7f ldrb r0, [r3] str r0, [r4, #0x70] adds r0, r4, #0 bl sub_0808F2B0 ldr r0, [r4, #0x50] adds r0, #0x6d ldrb r1, [r0] movs r0, #2 ands r0, r1 cmp r0, #0 beq _0808F2AC bl sub_0805E780 _0808F2AC: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808F2B0 sub_0808F2B0: @ 0x0808F2B0 push {lr} ldr r1, [r0, #0x74] ldr r2, [r0, #0x78] ldr r3, [r0, #0x70] bl sub_0805EC9C pop {pc} .align 2, 0 thumb_func_start sub_0808F2C0 sub_0808F2C0: @ 0x0808F2C0 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xc] adds r6, r0, #0 cmp r6, #0 bne _0808F322 adds r0, #1 strb r0, [r5, #0xc] ldr r4, [r5, #0x50] ldrb r2, [r4, #0x19] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r5, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r5, #0x19] ldrb r0, [r4, #0x1b] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r5, #0x1b] ands r1, r2 orrs r1, r0 strb r1, [r5, #0x1b] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] str r6, [r5, #0x34] ldr r1, [r5, #0x50] ldrh r0, [r1, #0x32] adds r0, #3 strh r0, [r5, #0x32] ldrh r0, [r1, #0x2e] strh r0, [r5, #0x2e] adds r0, r5, #0 movs r1, #3 bl UpdateSprite _0808F322: ldr r2, [r5, #0x50] movs r1, #0x36 ldrsh r0, [r2, r1] cmp r0, #0 bne _0808F334 ldr r0, [r2, #0x74] str r0, [r5, #0x74] ldr r0, [r2, #0x78] b _0808F34C _0808F334: movs r0, #0x36 ldrsh r1, [r2, r0] movs r0, #0x80 lsls r0, r0, #2 subs r0, r0, r1 str r0, [r5, #0x74] movs r0, #0x36 ldrsh r1, [r2, r0] lsls r1, r1, #1 movs r0, #0xc0 lsls r0, r0, #2 subs r0, r0, r1 _0808F34C: str r0, [r5, #0x78] movs r0, #0 str r0, [r5, #0x70] adds r0, r5, #0 bl sub_0808F2B0 ldr r1, [r5, #0x78] adds r0, r5, #0 movs r2, #8 movs r3, #2 bl sub_0806FCF4 ldrb r0, [r5, #0xc] cmp r0, #0xff bne _0808F36E bl sub_0805E780 _0808F36E: pop {r4, r5, r6, pc} thumb_func_start sub_0808F370 sub_0808F370: @ 0x0808F370 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0xc] cmp r1, #0 bne _0808F388 ldr r0, [r4, #0x50] ldrb r0, [r0, #0xd] cmp r0, #1 bne _0808F3DA strb r0, [r4, #0xc] str r1, [r4, #0x70] b _0808F3CC _0808F388: ldr r0, [r4, #0x50] ldrb r0, [r0, #0xd] subs r0, #1 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #4 bhi _0808F3D4 ldr r0, [r4, #0x70] cmp r0, #0 bne _0808F3C4 ldr r0, [r4, #0x74] subs r0, #1 str r0, [r4, #0x74] movs r1, #1 rsbs r1, r1, #0 cmp r0, r1 bne _0808F3DA bl Random ldr r2, _0808F3C0 @ =gUnk_08121EA0 movs r1, #1 ands r1, r0 lsls r1, r1, #1 adds r1, r1, r2 ldrh r0, [r1] str r0, [r4, #0x70] b _0808F3DA .align 2, 0 _0808F3C0: .4byte gUnk_08121EA0 _0808F3C4: subs r0, #1 str r0, [r4, #0x70] cmp r0, #0 bne _0808F3DA _0808F3CC: adds r0, r4, #0 bl sub_0808F5EC b _0808F3DA _0808F3D4: movs r0, #0 strb r0, [r4, #0xc] str r0, [r4, #0x74] _0808F3DA: pop {r4, pc} thumb_func_start sub_0808F3DC sub_0808F3DC: @ 0x0808F3DC push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0808F438 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x78 strb r0, [r4, #0xe] ldrb r1, [r4, #0xa] adds r1, #1 adds r0, r4, #0 bl UpdateSprite ldrb r0, [r4, #0xa] cmp r0, #8 beq _0808F41A cmp r0, #7 bne _0808F42E ldr r0, [r4, #0x54] adds r1, r4, #0 bl sub_0806FAD8 b _0808F494 _0808F41A: ldr r0, [r4, #0x54] adds r0, #0x3f ldrb r0, [r0] adds r1, r4, #0 adds r1, #0x3f strb r0, [r1] ldr r0, [r4, #0x54] adds r0, #0x3f movs r1, #0x7e strb r1, [r0] _0808F42E: ldr r0, [r4, #0x54] adds r1, r4, #0 bl sub_0806FAB0 b _0808F494 _0808F438: ldr r0, [r4, #0x50] ldr r0, [r0, #0x74] cmp r0, #0 bne _0808F456 ldrb r0, [r4, #0xa] cmp r0, #8 bne _0808F452 ldr r0, [r4, #0x54] adds r1, r4, #0 adds r1, #0x3f ldrb r1, [r1] adds r0, #0x3f strb r1, [r0] _0808F452: bl sub_0805E780 _0808F456: ldrb r0, [r4, #0xa] cmp r0, #5 bne _0808F486 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0808F486 ldr r0, [r4, #0x54] movs r1, #0x49 movs r2, #8 movs r3, #0 bl CreateObjectWithParent adds r1, r0, #0 cmp r1, #0 beq _0808F486 ldr r0, [r4, #0x50] str r0, [r1, #0x50] ldr r0, [r4, #0x50] ldr r0, [r0, #0x50] str r0, [r1, #0x54] _0808F486: adds r0, r4, #0 bl sub_08004274 ldr r0, [r4, #0x54] adds r1, r4, #0 bl sub_0806FA6C _0808F494: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808F498 sub_0808F498: @ 0x0808F498 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xc] cmp r0, #0 beq _0808F4EC adds r0, r5, #0 bl sub_0806F3E4 cmp r0, #0 beq _0808F4C2 ldr r0, _0808F4E4 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #0xf ands r0, r1 cmp r0, #0 bne _0808F4BE movs r0, #0xef bl PlaySFX _0808F4BE: bl sub_0805E780 _0808F4C2: ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _0808F4D4 bl sub_0805E780 _0808F4D4: ldr r0, _0808F4E8 @ =gLinkState ldrb r0, [r0, #0x1c] cmp r0, #1 beq _0808F550 bl sub_0805E780 b _0808F550 .align 2, 0 _0808F4E4: .4byte gUnk_030010A0 _0808F4E8: .4byte gLinkState _0808F4EC: movs r0, #1 strb r0, [r5, #0xc] movs r0, #0x40 strb r0, [r5, #0xe] ldrb r0, [r5, #0xb] movs r6, #0x2b cmp r0, #0 beq _0808F4FE movs r6, #0x2c _0808F4FE: ldr r0, [r5, #0x50] ldr r0, [r0, #0x48] ldrb r1, [r0, #6] ldrh r0, [r5, #0x2e] subs r0, r0, r1 strh r0, [r5, #0x2e] bl Random ldr r4, [r5, #0x50] ldr r1, [r4, #0x48] ldrb r1, [r1, #6] lsls r1, r1, #1 bl __modsi3 ldrh r1, [r5, #0x2e] adds r1, r1, r0 strh r1, [r5, #0x2e] ldr r0, [r4, #0x48] ldrb r1, [r0, #7] ldrh r0, [r5, #0x32] subs r0, r0, r1 strh r0, [r5, #0x32] bl Random ldr r1, [r5, #0x50] ldr r1, [r1, #0x48] ldrb r1, [r1, #7] lsls r1, r1, #1 bl __modsi3 ldrh r1, [r5, #0x32] adds r1, r1, r0 strh r1, [r5, #0x32] adds r0, r5, #0 adds r1, r6, #0 bl sub_0801D2B4 adds r0, r5, #0 movs r1, #4 bl UpdateSprite _0808F550: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0808F554 sub_0808F554: @ 0x0808F554 push {r4, r5, lr} adds r5, r0, #0 ldr r0, [r5, #0x50] adds r1, r5, #0 bl sub_0806FA6C adds r1, r5, #0 adds r1, #0x63 ldrb r0, [r1] subs r0, #0x18 strb r0, [r1] ldr r0, [r5, #0x50] adds r1, r0, #0 adds r1, #0x62 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 beq _0808F588 adds r2, r5, #0 adds r2, #0x62 lsrs r1, r0, #0x1f adds r0, r0, r1 asrs r0, r0, #1 ldrb r1, [r2] adds r0, r0, r1 strb r0, [r2] _0808F588: ldrb r0, [r5, #0xc] cmp r0, #0 beq _0808F5AC adds r1, r5, #0 adds r1, #0x84 ldr r0, [r1] cmp r0, #0 beq _0808F5A4 subs r0, #1 str r0, [r1] cmp r0, #0 bne _0808F5A4 bl sub_0805E780 _0808F5A4: adds r0, r5, #0 bl sub_08004274 b _0808F5E8 _0808F5AC: movs r0, #1 strb r0, [r5, #0xc] ldr r4, [r5, #0x50] ldrb r2, [r4, #0x19] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r5, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r5, #0x19] ldrb r0, [r4, #0x1b] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r5, #0x1b] ands r1, r2 orrs r1, r0 strb r1, [r5, #0x1b] adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] adds r0, r5, #0 movs r1, #3 bl UpdateSprite _0808F5E8: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0808F5EC sub_0808F5EC: @ 0x0808F5EC push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x54] movs r1, #0x49 movs r2, #5 movs r3, #0 bl CreateObjectWithParent adds r1, r0, #0 cmp r1, #0 beq _0808F608 str r4, [r1, #0x50] ldr r0, [r4, #0x54] str r0, [r1, #0x54] _0808F608: ldr r0, [r4, #0x54] movs r1, #0x49 movs r2, #6 movs r3, #0 bl CreateObjectWithParent adds r1, r0, #0 cmp r1, #0 beq _0808F620 str r4, [r1, #0x50] ldr r0, [r4, #0x54] str r0, [r1, #0x54] _0808F620: ldr r0, [r4, #0x54] movs r1, #0x49 movs r2, #7 movs r3, #0 bl CreateObjectWithParent adds r1, r0, #0 cmp r1, #0 beq _0808F638 str r4, [r1, #0x50] ldr r0, [r4, #0x54] str r0, [r1, #0x54] _0808F638: movs r0, #0x96 lsls r0, r0, #2 str r0, [r4, #0x74] pop {r4, pc} thumb_func_start sub_0808F640 sub_0808F640: @ 0x0808F640 push {lr} ldr r2, _0808F654 @ =gUnk_08121EA4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808F654: .4byte gUnk_08121EA4 thumb_func_start sub_0808F658 sub_0808F658: @ 0x0808F658 push {r4, r5, lr} adds r5, r0, #0 movs r2, #1 movs r0, #1 strb r0, [r5, #0xc] ldrb r1, [r5, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r5, #0x18] ldrb r0, [r5, #0x1b] movs r1, #0xc0 orrs r0, r1 strb r0, [r5, #0x1b] ldrb r0, [r5, #0x19] orrs r0, r1 strb r0, [r5, #0x19] ldrb r0, [r5, #0xa] adds r3, r5, #0 adds r3, #0x29 movs r1, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] ldrb r0, [r5, #0xa] strb r0, [r5, #0x1e] movs r0, #8 strb r0, [r5, #0x15] ldr r1, _0808F6D8 @ =gUnk_08121EB0 ldrb r0, [r5, #0xa] adds r0, r0, r1 ldrb r0, [r0] movs r4, #0 strh r0, [r5, #0x24] ldr r3, _0808F6DC @ =gRoomControls ldrh r1, [r3, #6] adds r2, r1, #0 subs r2, #0x60 adds r0, r5, #0 adds r0, #0x78 strh r2, [r0] ldrh r0, [r3, #0x1e] adds r1, r1, r0 adds r1, #0x60 adds r0, r5, #0 adds r0, #0x7a strh r1, [r0] strb r4, [r5, #0x14] bl Random movs r1, #0xf ands r0, r1 lsls r0, r0, #4 ldrh r1, [r5, #0x2e] adds r0, r0, r1 strh r0, [r5, #0x2e] strb r4, [r5, #0xe] strb r4, [r5, #0xd] pop {r4, r5, pc} .align 2, 0 _0808F6D8: .4byte gUnk_08121EB0 _0808F6DC: .4byte gRoomControls thumb_func_start sub_0808F6E0 sub_0808F6E0: @ 0x0808F6E0 push {r4, lr} adds r4, r0, #0 bl sub_0806F69C adds r0, r4, #0 adds r0, #0x78 movs r2, #0x2e ldrsh r1, [r4, r2] movs r2, #0 ldrsh r0, [r0, r2] cmp r1, r0 blt _0808F704 adds r0, r4, #0 adds r0, #0x7a movs r2, #0 ldrsh r0, [r0, r2] cmp r1, r0 ble _0808F708 _0808F704: movs r0, #2 strb r0, [r4, #0xc] _0808F708: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808F70C sub_0808F70C: @ 0x0808F70C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xd] cmp r0, #0 bne _0808F75C movs r0, #1 strb r0, [r4, #0xd] bl Random movs r1, #7 ands r0, r1 lsls r0, r0, #3 adds r0, #0x1f strb r0, [r4, #0xe] ldrb r1, [r4, #0x15] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _0808F738 adds r0, r4, #0 adds r0, #0x7a b _0808F73C _0808F738: adds r0, r4, #0 adds r0, #0x78 _0808F73C: ldrh r0, [r0] strh r0, [r4, #0x2e] ldrb r0, [r4, #0xa] cmp r0, #2 bne _0808F75C bl Random ldr r3, _0808F778 @ =gUnk_08121EB3 ldrb r1, [r4, #0xb] lsls r1, r1, #1 movs r2, #1 ands r2, r0 adds r1, r1, r2 adds r1, r1, r3 ldrb r0, [r1] strh r0, [r4, #0x32] _0808F75C: ldrb r1, [r4, #0xd] cmp r1, #1 bne _0808F774 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0 bne _0808F774 strb r1, [r4, #0xc] strb r0, [r4, #0xd] _0808F774: pop {r4, pc} .align 2, 0 _0808F778: .4byte gUnk_08121EB3 thumb_func_start sub_0808F77C sub_0808F77C: @ 0x0808F77C push {lr} ldr r2, _0808F790 @ =gUnk_08121EB8 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0808F790: .4byte gUnk_08121EB8 thumb_func_start sub_0808F794 sub_0808F794: @ 0x0808F794 push {lr} movs r1, #1 strb r1, [r0, #0xc] movs r1, #0x3c strb r1, [r0, #0xe] movs r1, #0 bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_0808F7A8 sub_0808F7A8: @ 0x0808F7A8 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xe] subs r0, #1 strb r0, [r2, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808F7D0 movs r0, #0x78 strb r0, [r2, #0xe] ldrb r0, [r2, #0xc] adds r0, #1 strb r0, [r2, #0xc] ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r2, #0x18] _0808F7D0: pop {pc} .align 2, 0 thumb_func_start sub_0808F7D4 sub_0808F7D4: @ 0x0808F7D4 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808F80A ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 movs r1, #2 bl UpdateSprite _0808F80A: pop {r4, pc} thumb_func_start sub_0808F80C sub_0808F80C: @ 0x0808F80C push {r4, lr} adds r4, r0, #0 bl sub_08004274 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _0808F850 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] strb r1, [r4, #0x15] movs r2, #0 movs r0, #0x80 lsls r0, r0, #1 strh r0, [r4, #0x24] movs r0, #0x80 lsls r0, r0, #0xa str r0, [r4, #0x20] ldrb r1, [r4, #0x1b] movs r0, #0x3f ands r0, r1 strb r0, [r4, #0x1b] strb r2, [r4, #0xe] adds r0, r4, #0 movs r1, #3 bl UpdateSprite ldr r0, _0808F854 @ =0x0000012B bl PlaySFX _0808F850: pop {r4, pc} .align 2, 0 _0808F854: .4byte 0x0000012B thumb_func_start sub_0808F858 sub_0808F858: @ 0x0808F858 push {r4, lr} adds r4, r0, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _0808F884 adds r0, r4, #0 bl sub_0806F69C movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _0808F88A adds r0, r4, #0 bl sub_08004274 b _0808F88A _0808F884: adds r0, r4, #0 bl sub_08004274 _0808F88A: movs r1, #0x32 ldrsh r0, [r4, r1] ldr r1, _0808F8C4 @ =gRoomControls ldrh r2, [r1, #8] subs r0, r0, r2 movs r1, #0x8c lsls r1, r1, #2 cmp r0, r1 bgt _0808F8C8 adds r0, r2, r1 strh r0, [r4, #0x32] adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808F8EA ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0x78 strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #2 bl UpdateSprite b _0808F8EA .align 2, 0 _0808F8C4: .4byte gRoomControls _0808F8C8: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808F8EA movs r0, #0x80 lsls r0, r0, #0xa str r0, [r4, #0x20] adds r0, r4, #0 movs r1, #3 bl UpdateSprite ldr r0, _0808F8EC @ =0x0000012B bl PlaySFX _0808F8EA: pop {r4, pc} .align 2, 0 _0808F8EC: .4byte 0x0000012B thumb_func_start sub_0808F8F0 sub_0808F8F0: @ 0x0808F8F0 push {r4, lr} adds r4, r0, #0 bl sub_08004274 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808F912 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #5 bl UpdateSprite _0808F912: pop {r4, pc} thumb_func_start sub_0808F914 sub_0808F914: @ 0x0808F914 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808F93C ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #1 bl UpdateSprite _0808F93C: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808F940 sub_0808F940: @ 0x0808F940 push {r4, lr} adds r4, r0, #0 bl sub_08004274 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808F960 ldr r1, _0808F964 @ =gUnk_02000080 ldrb r0, [r1, #6] adds r0, #1 strb r0, [r1, #6] bl sub_0805E780 _0808F960: pop {r4, pc} .align 2, 0 _0808F964: .4byte gUnk_02000080 thumb_func_start sub_0808F968 sub_0808F968: @ 0x0808F968 push {r4, lr} adds r4, r0, #0 ldr r1, _0808F98C @ =gUnk_08121ED8 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 ldrb r0, [r4, #0xc] cmp r0, #0 beq _0808F988 adds r0, r4, #0 bl sub_08090514 _0808F988: pop {r4, pc} .align 2, 0 _0808F98C: .4byte gUnk_08121ED8 thumb_func_start sub_0808F990 sub_0808F990: @ 0x0808F990 push {r4, r5, r6, lr} adds r4, r0, #0 movs r2, #1 strb r2, [r4, #0xc] movs r3, #0 movs r0, #0x80 strh r0, [r4, #0x24] ldrb r0, [r4, #0xe] strb r0, [r4, #0xf] strb r3, [r4, #0xe] ldrb r1, [r4, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] adds r0, r4, #0 adds r0, #0x81 strb r3, [r0] adds r0, #2 strb r3, [r0] ldrb r1, [r4, #0x19] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x19] ldrb r0, [r4, #0xa] cmp r0, #1 bne _0808F9E8 adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 adds r0, #0x80 strb r3, [r0] b _0808FA1C _0808F9E8: adds r0, r4, #0 adds r0, #0x80 strb r2, [r0] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r2] ldrb r0, [r4, #0xa] cmp r0, #2 beq _0808FA0A cmp r0, #4 bne _0808FA1C _0808FA0A: ldrh r0, [r4, #0x32] adds r0, #2 strh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x63 movs r0, #0xfe strb r0, [r1] strb r3, [r4, #0xd] strb r3, [r4, #0x1e] _0808FA1C: ldrb r0, [r4, #0xf] cmp r0, #0 beq _0808FAC4 movs r6, #0 cmp r0, #0x80 beq _0808FA84 ldrh r1, [r4, #0xa] ldr r0, _0808FA38 @ =0x00000101 cmp r1, r0 bne _0808FA3C movs r0, #0xf ldrsb r0, [r4, r0] ldrh r1, [r4, #0x32] b _0808FA42 .align 2, 0 _0808FA38: .4byte 0x00000101 _0808FA3C: movs r0, #0xf ldrsb r0, [r4, r0] ldrh r1, [r4, #0x2e] _0808FA42: adds r0, r0, r1 adds r1, r4, #0 adds r1, #0x7e strh r0, [r1] adds r5, r1, #0 ldr r3, [r4, #0x50] cmp r3, #0 bne _0808FA5E adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 b _0808FA7C _0808FA5E: adds r2, r4, #0 adds r2, #0x82 ldrb r1, [r2] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808FA76 ldrb r0, [r3, #0xc] cmp r0, #2 bne _0808FAA2 adds r6, #1 b _0808FAA2 _0808FA76: ldrb r0, [r2] bl sub_0807CBD0 _0808FA7C: cmp r0, #0 beq _0808FAA2 adds r6, #1 b _0808FAA2 _0808FA84: movs r6, #1 ldrh r1, [r4, #0xa] ldr r0, _0808FA94 @ =0x00000101 cmp r1, r0 bne _0808FA98 ldrh r1, [r4, #0x32] b _0808FA9A .align 2, 0 _0808FA94: .4byte 0x00000101 _0808FA98: ldrh r1, [r4, #0x2e] _0808FA9A: adds r0, r4, #0 adds r0, #0x7e strh r1, [r0] adds r5, r0, #0 _0808FAA2: cmp r6, #0 beq _0808FAC4 adds r1, r4, #0 adds r1, #0x81 movs r0, #1 strb r0, [r1] ldrh r1, [r4, #0xa] ldr r0, _0808FABC @ =0x00000101 cmp r1, r0 bne _0808FAC0 ldrh r0, [r5] strh r0, [r4, #0x32] b _0808FAC4 .align 2, 0 _0808FABC: .4byte 0x00000101 _0808FAC0: ldrh r0, [r5] strh r0, [r4, #0x2e] _0808FAC4: adds r0, r4, #0 bl sub_0808FF50 pop {r4, r5, r6, pc} thumb_func_start sub_0808FACC sub_0808FACC: @ 0x0808FACC push {r4, lr} adds r4, r0, #0 adds r0, #0x81 ldrb r0, [r0] cmp r0, #0 bne _0808FAF2 adds r0, r4, #0 adds r0, #0x80 ldrb r0, [r0] cmp r0, #0 bne _0808FAEA adds r0, r4, #0 bl sub_0808FBFC b _0808FB0A _0808FAEA: adds r0, r4, #0 bl sub_0808FB68 b _0808FB0A _0808FAF2: ldrb r0, [r4, #0xe] cmp r0, #0 beq _0808FB0A subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808FB0A movs r0, #0x86 lsls r0, r0, #1 bl sub_08004488 _0808FB0A: ldrb r0, [r4, #0xa] cmp r0, #2 beq _0808FB14 cmp r0, #4 bne _0808FB64 _0808FB14: ldrb r1, [r4, #0xd] cmp r1, #1 beq _0808FB3E cmp r1, #1 bgt _0808FB24 cmp r1, #0 beq _0808FB2A b _0808FB64 _0808FB24: cmp r1, #2 beq _0808FB5E b _0808FB64 _0808FB2A: adds r0, r4, #0 bl sub_0808FECC cmp r0, #0 beq _0808FB64 movs r0, #1 strb r0, [r4, #0xd] movs r0, #0xc strb r0, [r4, #0xe] b _0808FB64 _0808FB3E: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0808FB64 strb r1, [r4, #0x1e] movs r0, #2 strb r0, [r4, #0xd] movs r0, #0x80 bl sub_08004488 adds r0, r4, #0 bl sub_0808FF20 b _0808FB64 _0808FB5E: adds r0, r4, #0 bl nullsub_1 _0808FB64: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808FB68 sub_0808FB68: @ 0x0808FB68 push {r4, lr} adds r4, r0, #0 adds r0, #0x70 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080001DA adds r1, r0, #0 ldr r0, _0808FBAC @ =0x00004031 cmp r1, r0 bhi _0808FBB0 subs r0, #1 cmp r1, r0 blo _0808FBB0 movs r0, #2 strb r0, [r4, #0xc] adds r0, r1, #0 subs r0, #0x30 movs r1, #1 ands r0, r1 lsls r0, r0, #4 movs r1, #8 orrs r0, r1 strb r0, [r4, #0x15] movs r0, #1 bl sub_08078A90 adds r0, r4, #0 movs r1, #0 bl sub_0808FD44 b _0808FBF6 .align 2, 0 _0808FBAC: .4byte 0x00004031 _0808FBB0: adds r0, r4, #0 adds r0, #0x72 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080001DA adds r1, r0, #0 ldr r0, _0808FBF8 @ =0x00004031 cmp r1, r0 bhi _0808FBF0 subs r0, #1 cmp r1, r0 blo _0808FBF0 movs r0, #2 strb r0, [r4, #0xc] adds r0, r1, #0 subs r0, #0x30 movs r1, #1 ands r0, r1 lsls r0, r0, #4 movs r1, #8 orrs r0, r1 strb r0, [r4, #0x15] movs r0, #1 bl sub_08078A90 adds r0, r4, #0 movs r1, #1 bl sub_0808FD44 _0808FBF0: adds r0, r4, #0 bl sub_0808FDE8 _0808FBF6: pop {r4, pc} .align 2, 0 _0808FBF8: .4byte 0x00004031 thumb_func_start sub_0808FBFC sub_0808FBFC: @ 0x0808FBFC push {r4, lr} adds r4, r0, #0 adds r0, #0x7c ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080001DA adds r1, r0, #0 ldr r0, _0808FC38 @ =0x0000404A cmp r1, r0 beq _0808FC34 movs r0, #2 strb r0, [r4, #0xc] adds r0, r1, #0 subs r0, #0x4b movs r1, #3 ands r0, r1 lsls r0, r0, #3 strb r0, [r4, #0x15] movs r0, #1 bl sub_08078A90 adds r0, r4, #0 movs r1, #0 bl sub_0808FD44 _0808FC34: pop {r4, pc} .align 2, 0 _0808FC38: .4byte 0x0000404A thumb_func_start sub_0808FC3C sub_0808FC3C: @ 0x0808FC3C push {r4, lr} adds r4, r0, #0 bl sub_0800445C adds r0, r4, #0 bl sub_0808FC5C cmp r0, #0 beq _0808FC58 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0 bl sub_08078A90 _0808FC58: pop {r4, pc} .align 2, 0 thumb_func_start sub_0808FC5C sub_0808FC5C: @ 0x0808FC5C push {r4, r5, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0 bne _0808FD40 ldrb r1, [r4, #0xa] cmp r1, #2 beq _0808FC7C cmp r1, #4 bne _0808FC84 _0808FC7C: adds r1, r4, #0 adds r1, #0x63 movs r0, #0xfe b _0808FC88 _0808FC84: adds r1, r4, #0 adds r1, #0x63 _0808FC88: strb r0, [r1] adds r0, r4, #0 bl sub_080002D0 cmp r0, #0 bne _0808FD40 ldrb r0, [r4, #0xf] cmp r0, #0 beq _0808FD30 movs r2, #0 ldrh r1, [r4, #0xa] ldr r0, _0808FCB4 @ =0x00000101 cmp r1, r0 bne _0808FCB8 movs r1, #0x32 ldrsh r0, [r4, r1] adds r1, r4, #0 adds r1, #0x7e ldrh r1, [r1] cmp r0, r1 bne _0808FCC8 b _0808FCCC .align 2, 0 _0808FCB4: .4byte 0x00000101 _0808FCB8: movs r1, #0x2e ldrsh r0, [r4, r1] adds r1, r4, #0 adds r1, #0x7e ldrh r1, [r1] cmp r0, r1 bne _0808FCC8 movs r2, #1 _0808FCC8: cmp r2, #0 beq _0808FD30 _0808FCCC: adds r0, r4, #0 adds r0, #0x81 movs r5, #1 strb r5, [r0] ldr r3, [r4, #0x50] cmp r3, #0 bne _0808FCE4 adds r0, #5 ldrh r0, [r0] bl sub_0807CCC8 b _0808FD0C _0808FCE4: adds r2, r4, #0 adds r2, #0x82 ldrb r1, [r2] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0808FD06 adds r0, r3, #0 adds r0, #0x28 subs r2, #8 adds r1, r5, #0 ldrh r2, [r2] lsls r1, r2 ldrb r2, [r0] orrs r1, r2 strb r1, [r0] b _0808FD0C _0808FD06: ldrb r0, [r2] bl sub_0807CCB4 _0808FD0C: adds r0, r4, #0 adds r0, #0x80 ldrb r0, [r0] cmp r0, #0 bne _0808FD1A movs r0, #4 b _0808FD1C _0808FD1A: movs r0, #0x18 _0808FD1C: strb r0, [r4, #0xe] ldr r0, _0808FD3C @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _0808FD30 ldrb r0, [r4, #0xe] adds r0, #0x10 strb r0, [r4, #0xe] _0808FD30: adds r0, r4, #0 bl sub_0808FF50 movs r0, #1 b _0808FD42 .align 2, 0 _0808FD3C: .4byte gLinkState _0808FD40: movs r0, #0 _0808FD42: pop {r4, r5, pc} thumb_func_start sub_0808FD44 sub_0808FD44: @ 0x0808FD44 push {r4, r5, lr} adds r4, r0, #0 adds r5, r1, #0 adds r0, #0x80 ldrb r0, [r0] cmp r0, #1 bne _0808FD8E adds r0, r4, #0 adds r0, #0x83 ldrb r0, [r0] cmp r0, #0 beq _0808FD62 adds r0, r4, #0 bl sub_08090498 _0808FD62: cmp r5, #0 beq _0808FD6C adds r0, r4, #0 adds r0, #0x72 b _0808FD70 _0808FD6C: adds r0, r4, #0 adds r0, #0x70 _0808FD70: ldrh r5, [r0] ldr r0, _0808FD84 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _0808FD88 movs r0, #0x40 strh r0, [r4, #0x24] b _0808FDB2 .align 2, 0 _0808FD84: .4byte gLinkState _0808FD88: strh r1, [r4, #0x24] movs r0, #0x10 b _0808FDB4 _0808FD8E: adds r0, r4, #0 adds r0, #0x7c ldrh r5, [r0] ldr r0, _0808FDAC @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _0808FDB0 movs r1, #0x40 movs r0, #0x40 strh r0, [r4, #0x24] strb r1, [r4, #0xe] b _0808FDB6 .align 2, 0 _0808FDAC: .4byte gLinkState _0808FDB0: strh r1, [r4, #0x24] _0808FDB2: movs r0, #0x20 _0808FDB4: strb r0, [r4, #0xe] _0808FDB6: ldr r0, _0808FDE0 @ =0x0000010F bl sub_08004488 adds r0, r4, #0 bl sub_08090254 ldr r1, _0808FDE4 @ =gUnk_080B4488 ldrb r0, [r4, #0x15] lsrs r0, r0, #3 lsls r0, r0, #1 adds r0, r0, r1 movs r1, #0 ldrsh r0, [r0, r1] adds r0, r5, r0 adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080001DA pop {r4, r5, pc} .align 2, 0 _0808FDE0: .4byte 0x0000010F _0808FDE4: .4byte gUnk_080B4488 thumb_func_start sub_0808FDE8 sub_0808FDE8: @ 0x0808FDE8 push {r4, r5, r6, r7, lr} adds r7, r0, #0 adds r0, #0x70 ldrh r5, [r0] subs r0, r5, #1 movs r1, #1 bl sub_080002E0 adds r4, r0, #0 adds r0, r5, #0 movs r1, #1 bl sub_080001DA ldr r6, _0808FE28 @ =0x0000402E cmp r0, r6 bne _0808FE30 movs r0, #0xf0 ands r0, r4 cmp r0, #0 beq _0808FE14 cmp r0, #0x50 bne _0808FE1C _0808FE14: movs r0, #5 ands r0, r4 cmp r0, #0 bne _0808FE58 _0808FE1C: ldr r0, _0808FE2C @ =0x0000402C adds r1, r5, #0 movs r2, #1 bl UpdateCollisionLayer b _0808FE58 .align 2, 0 _0808FE28: .4byte 0x0000402E _0808FE2C: .4byte 0x0000402C _0808FE30: adds r0, r5, #0 movs r1, #1 bl sub_080002E0 cmp r0, #5 bne _0808FE58 movs r1, #0xf0 ands r1, r4 cmp r1, #0 beq _0808FE48 cmp r1, #0x50 bne _0808FE58 _0808FE48: ands r4, r0 cmp r4, #0 beq _0808FE58 adds r0, r6, #0 adds r1, r5, #0 movs r2, #1 bl UpdateCollisionLayer _0808FE58: adds r0, r7, #0 adds r0, #0x72 ldrh r5, [r0] adds r0, r5, #1 movs r1, #1 bl sub_080002E0 adds r4, r0, #0 adds r0, r5, #0 movs r1, #1 bl sub_080001DA ldr r6, _0808FE98 @ =0x0000402F cmp r0, r6 bne _0808FEA0 movs r0, #0xf0 ands r0, r4 cmp r0, #0 beq _0808FE82 cmp r0, #0x50 bne _0808FE8A _0808FE82: movs r0, #0xa ands r0, r4 cmp r0, #0 bne _0808FEC8 _0808FE8A: ldr r0, _0808FE9C @ =0x0000402D adds r1, r5, #0 movs r2, #1 bl UpdateCollisionLayer b _0808FEC8 .align 2, 0 _0808FE98: .4byte 0x0000402F _0808FE9C: .4byte 0x0000402D _0808FEA0: adds r0, r5, #0 movs r1, #1 bl sub_080002E0 cmp r0, #0xa bne _0808FEC8 movs r1, #0xf0 ands r1, r4 cmp r1, #0 beq _0808FEB8 cmp r1, #0x50 bne _0808FEC8 _0808FEB8: ands r4, r0 cmp r4, #0 beq _0808FEC8 adds r0, r6, #0 adds r1, r5, #0 movs r2, #1 bl UpdateCollisionLayer _0808FEC8: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0808FECC sub_0808FECC: @ 0x0808FECC push {r4, r5, lr} adds r2, r0, #0 movs r4, #1 ldr r0, _0808FF18 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _0808FF10 ldr r3, _0808FF1C @ =gLinkEntity ldrb r0, [r3, #0xc] cmp r0, #6 bne _0808FF10 ldrb r0, [r3, #0x14] cmp r0, #0 bne _0808FF10 movs r1, #0x32 ldrsh r0, [r3, r1] movs r5, #0x32 ldrsh r1, [r2, r5] subs r0, r0, r1 cmp r0, #0x13 bgt _0808FF10 movs r0, #0x2e ldrsh r2, [r2, r0] adds r0, r2, #0 adds r0, #0xc movs r5, #0x2e ldrsh r1, [r3, r5] cmp r0, r1 ble _0808FF10 subs r0, #0x18 cmp r0, r1 blt _0808FF12 _0808FF10: movs r4, #0 _0808FF12: adds r0, r4, #0 pop {r4, r5, pc} .align 2, 0 _0808FF18: .4byte gLinkState _0808FF1C: .4byte gLinkEntity thumb_func_start sub_0808FF20 sub_0808FF20: @ 0x0808FF20 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0xb] cmp r1, #0 beq _0808FF4A cmp r1, #0 blt _0808FF4A cmp r1, #2 bgt _0808FF4A subs r1, #1 movs r0, #0x63 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _0808FF4A str r4, [r1, #0x50] adds r0, r4, #0 bl CopyPosition _0808FF4A: pop {r4, pc} thumb_func_start nullsub_1 nullsub_1: @ 0x0808FF4C bx lr .align 2, 0 thumb_func_start sub_0808FF50 sub_0808FF50: @ 0x0808FF50 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r6, r0, #0 movs r0, #0x2e ldrsh r1, [r6, r0] ldr r2, _0808FF98 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r4, #0x32 ldrsh r0, [r6, r4] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r2, r6, #0 adds r2, #0x7c strh r1, [r2] ldrh r0, [r6, #0x2e] movs r1, #0xf ands r1, r0 ldrh r7, [r2] adds r0, r6, #0 adds r0, #0x80 ldrb r0, [r0] cmp r0, #0 beq _0808FF9C cmp r0, #1 beq _0808FFC0 b _0809008A .align 2, 0 _0808FF98: .4byte gRoomControls _0808FF9C: adds r0, r6, #0 adds r0, #0x70 strh r7, [r0] ldrh r0, [r0] movs r1, #1 bl sub_080001DA adds r1, r6, #0 adds r1, #0x74 strh r0, [r1] ldr r0, _0808FFBC @ =0x0000404A adds r1, r7, #0 movs r2, #1 bl UpdateCollisionLayer b _0809008A .align 2, 0 _0808FFBC: .4byte 0x0000404A _0808FFC0: movs r0, #8 ands r1, r0 cmp r1, #0 beq _0809002C adds r0, r6, #0 adds r0, #0x70 strh r7, [r0] ldrh r0, [r0] movs r1, #1 bl sub_080001DA adds r1, r6, #0 adds r1, #0x74 strh r0, [r1] ldr r4, _08090028 @ =gUnk_08121EE4 movs r0, #0x81 adds r0, r0, r6 mov r8, r0 ldrb r0, [r0] lsls r0, r0, #1 adds r0, r0, r4 ldrh r0, [r0] adds r1, r7, #0 movs r2, #1 bl UpdateCollisionLayer adds r0, r7, #1 adds r5, r6, #0 adds r5, #0x72 strh r0, [r5] ldrh r0, [r5] movs r1, #1 bl sub_080001DA adds r1, r6, #0 adds r1, #0x76 strh r0, [r1] mov r1, r8 ldrb r0, [r1] adds r0, #4 lsls r0, r0, #1 adds r0, r0, r4 ldrh r1, [r0] ldrh r2, [r5] adds r0, r6, #0 bl sub_08090094 adds r0, r6, #0 movs r1, #1 bl sub_0809028C b _0809008A .align 2, 0 _08090028: .4byte gUnk_08121EE4 _0809002C: adds r0, r6, #0 adds r0, #0x72 strh r7, [r0] ldrh r0, [r0] movs r1, #1 bl sub_080001DA adds r1, r6, #0 adds r1, #0x76 strh r0, [r1] ldr r5, _08090090 @ =gUnk_08121EE4 movs r4, #0x81 adds r4, r4, r6 mov r8, r4 ldrb r0, [r4] lsls r0, r0, #1 adds r0, r0, r5 ldrh r0, [r0] adds r1, r7, #0 movs r2, #1 bl UpdateCollisionLayer subs r0, r7, #1 adds r4, r6, #0 adds r4, #0x70 strh r0, [r4] ldrh r0, [r4] movs r1, #1 bl sub_080001DA adds r1, r6, #0 adds r1, #0x74 strh r0, [r1] mov r1, r8 ldrb r0, [r1] adds r0, #2 lsls r0, r0, #1 adds r0, r0, r5 ldrh r1, [r0] ldrh r2, [r4] adds r0, r6, #0 bl sub_08090094 adds r0, r6, #0 movs r1, #0 bl sub_0809028C _0809008A: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08090090: .4byte gUnk_08121EE4 thumb_func_start sub_08090094 sub_08090094: @ 0x08090094 push {r4, r5, r6, r7, lr} adds r6, r0, #0 adds r5, r1, #0 adds r7, r2, #0 adds r0, r7, #0 movs r1, #1 bl sub_080002E0 adds r4, r0, #0 adds r0, r7, #0 movs r1, #1 bl sub_080001DA adds r3, r0, #0 movs r0, #0x80 lsls r0, r0, #7 ands r0, r3 cmp r0, #0 bne _0809012C adds r3, r5, #0 ldr r1, _080900D0 @ =0xFFFFBFDC adds r0, r3, r1 cmp r0, #0xb bhi _0809011A lsls r0, r0, #2 ldr r1, _080900D4 @ =_080900D8 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080900D0: .4byte 0xFFFFBFDC _080900D4: .4byte _080900D8 _080900D8: @ jump table .4byte _08090114 @ case 0 .4byte _08090108 @ case 1 .4byte _0809011A @ case 2 .4byte _0809011A @ case 3 .4byte _0809011A @ case 4 .4byte _0809011A @ case 5 .4byte _0809011A @ case 6 .4byte _0809011A @ case 7 .4byte _08090114 @ case 8 .4byte _0809010E @ case 9 .4byte _08090114 @ case 10 .4byte _0809010E @ case 11 _08090108: cmp r4, #5 bne _0809011A b _08090118 _0809010E: cmp r4, #5 bne _0809011A b _08090118 _08090114: cmp r4, #0xa bne _0809011A _08090118: ldr r3, _08090128 @ =0x00004022 _0809011A: adds r0, r3, #0 adds r1, r7, #0 movs r2, #1 bl UpdateCollisionLayer b _08090242 .align 2, 0 _08090128: .4byte 0x00004022 _0809012C: ldr r1, _08090140 @ =0xFFFFBFDE adds r0, r3, r1 cmp r0, #0xd bls _08090136 b _08090242 _08090136: lsls r0, r0, #2 ldr r1, _08090144 @ =_08090148 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08090140: .4byte 0xFFFFBFDE _08090144: .4byte _08090148 _08090148: @ jump table .4byte _08090242 @ case 0 .4byte _08090242 @ case 1 .4byte _080901EC @ case 2 .4byte _08090180 @ case 3 .4byte _08090242 @ case 4 .4byte _08090242 @ case 5 .4byte _08090242 @ case 6 .4byte _08090242 @ case 7 .4byte _08090242 @ case 8 .4byte _08090242 @ case 9 .4byte _08090210 @ case 10 .4byte _080901B4 @ case 11 .4byte _08090210 @ case 12 .4byte _080901B4 @ case 13 _08090180: ldr r0, _080901A8 @ =0x00004024 cmp r5, r0 bne _08090194 ldr r3, _080901AC @ =0x00004022 adds r2, r6, #0 adds r2, #0x83 ldrb r1, [r2] movs r0, #0x10 orrs r0, r1 strb r0, [r2] _08090194: ldr r0, _080901B0 @ =0x0000402C cmp r5, r0 bne _08090238 ldr r3, _080901AC @ =0x00004022 adds r2, r6, #0 adds r2, #0x83 ldrb r1, [r2] movs r0, #0x10 b _08090234 .align 2, 0 _080901A8: .4byte 0x00004024 _080901AC: .4byte 0x00004022 _080901B0: .4byte 0x0000402C _080901B4: ldr r0, _080901DC @ =0x0000402C cmp r5, r0 bne _080901C8 ldr r3, _080901E0 @ =0x0000402B adds r2, r6, #0 adds r2, #0x83 ldrb r1, [r2] movs r0, #0x10 orrs r0, r1 strb r0, [r2] _080901C8: ldr r0, _080901E4 @ =0x00004024 cmp r5, r0 bne _08090238 ldr r3, _080901E8 @ =0x00004022 adds r2, r6, #0 adds r2, #0x83 ldrb r1, [r2] movs r0, #0x10 b _08090234 .align 2, 0 _080901DC: .4byte 0x0000402C _080901E0: .4byte 0x0000402B _080901E4: .4byte 0x00004024 _080901E8: .4byte 0x00004022 _080901EC: ldr r0, _08090204 @ =0x00004025 cmp r5, r0 bne _08090200 ldr r3, _08090208 @ =0x00004022 adds r2, r6, #0 adds r2, #0x83 ldrb r1, [r2] movs r0, #0x20 orrs r0, r1 strb r0, [r2] _08090200: ldr r0, _0809020C @ =0x0000402D b _08090226 .align 2, 0 _08090204: .4byte 0x00004025 _08090208: .4byte 0x00004022 _0809020C: .4byte 0x0000402D _08090210: ldr r0, _08090244 @ =0x0000402D cmp r5, r0 bne _08090224 ldr r3, _08090248 @ =0x0000402B adds r2, r6, #0 adds r2, #0x83 ldrb r1, [r2] movs r0, #0x20 orrs r0, r1 strb r0, [r2] _08090224: ldr r0, _0809024C @ =0x00004025 _08090226: cmp r5, r0 bne _08090238 ldr r3, _08090250 @ =0x00004022 adds r2, r6, #0 adds r2, #0x83 ldrb r1, [r2] movs r0, #0x20 _08090234: orrs r0, r1 strb r0, [r2] _08090238: adds r0, r3, #0 adds r1, r7, #0 movs r2, #1 bl UpdateCollisionLayer _08090242: pop {r4, r5, r6, r7, pc} .align 2, 0 _08090244: .4byte 0x0000402D _08090248: .4byte 0x0000402B _0809024C: .4byte 0x00004025 _08090250: .4byte 0x00004022 thumb_func_start sub_08090254 sub_08090254: @ 0x08090254 push {r4, r5, lr} adds r4, r0, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x70 ldrh r1, [r1] adds r5, r4, #0 adds r5, #0x38 ldrb r2, [r5] bl sub_0807B9B8 adds r0, r4, #0 adds r0, #0x80 ldrb r0, [r0] cmp r0, #1 bne _08090288 adds r0, r4, #0 adds r0, #0x76 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x72 ldrh r1, [r1] ldrb r2, [r5] bl sub_0807B9B8 _08090288: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0809028C sub_0809028C: @ 0x0809028C push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} adds r6, r0, #0 adds r4, r6, #0 adds r4, #0x83 ldrb r0, [r4] movs r2, #0x30 ands r2, r0 movs r0, #0 mov sb, r0 strb r2, [r4] adds r0, r6, #0 adds r0, #0x70 ldrh r5, [r0] adds r7, r5, #0 subs r7, #0x80 adds r0, #2 ldrh r3, [r0] movs r0, #0x80 rsbs r0, r0, #0 adds r0, r0, r3 mov r8, r0 cmp r1, #1 bne _0809039A movs r0, #0x20 ands r0, r2 cmp r0, #0 beq _080902D4 adds r1, r3, #0 subs r1, #0x7f movs r0, #0 bl sub_08090480 b _080902FE _080902D4: mov r0, r8 movs r1, #2 bl sub_080002B0 adds r1, r0, #0 ldr r0, _080902EC @ =0x00000301 cmp r1, r0 beq _080902F0 adds r0, #7 cmp r1, r0 beq _080902F6 b _080902FE .align 2, 0 _080902EC: .4byte 0x00000301 _080902F0: ldrb r0, [r4] movs r1, #8 b _080902FA _080902F6: ldrb r0, [r4] movs r1, #2 _080902FA: orrs r0, r1 strb r0, [r4] _080902FE: adds r2, r6, #0 adds r2, #0x83 ldrb r1, [r2] movs r0, #0x2a ands r0, r1 adds r4, r2, #0 cmp r0, #0 beq _0809031E movs r0, #0 adds r1, r7, #0 bl sub_08090480 movs r0, #0 mov r1, r8 bl sub_08090480 _0809031E: ldrb r1, [r4] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _0809034E subs r4, r7, #1 adds r0, r4, #0 movs r1, #1 bl sub_080002B0 movs r1, #0xc0 lsls r1, r1, #2 cmp r0, r1 bne _0809033C b _08090478 _0809033C: movs r0, #0 adds r1, r4, #0 bl sub_08090480 subs r1, r7, #2 movs r0, #2 bl sub_08090480 b _08090478 _0809034E: subs r0, r7, #1 movs r1, #2 bl sub_080002B0 adds r1, r0, #0 movs r0, #0xc0 lsls r0, r0, #2 cmp r1, r0 beq _08090368 adds r0, #8 cmp r1, r0 beq _0809036E b _08090376 _08090368: ldrb r1, [r4] movs r0, #4 b _08090372 _0809036E: ldrb r1, [r4] movs r0, #1 _08090372: orrs r0, r1 strb r0, [r4] _08090376: ldrb r1, [r4] movs r0, #0x15 ands r0, r1 cmp r0, #0 beq _08090478 movs r0, #0x2a ands r0, r1 cmp r0, #0 bne _08090478 movs r0, #0 adds r1, r7, #0 bl sub_08090480 movs r0, #1 mov r1, r8 bl sub_08090480 b _08090478 _0809039A: movs r0, #0x10 ands r0, r2 cmp r0, #0 beq _080903AE adds r1, r5, #0 subs r1, #0x81 movs r0, #0 bl sub_08090480 b _080903DA _080903AE: adds r0, r7, #0 movs r1, #2 bl sub_080002B0 adds r1, r0, #0 ldr r0, _080903C8 @ =0x00000302 cmp r1, r0 beq _080903CC adds r0, #4 cmp r1, r0 beq _080903D2 b _080903DA .align 2, 0 _080903C8: .4byte 0x00000302 _080903CC: ldrb r0, [r4] movs r1, #4 b _080903D6 _080903D2: ldrb r0, [r4] movs r1, #1 _080903D6: orrs r0, r1 strb r0, [r4] _080903DA: adds r2, r6, #0 adds r2, #0x83 ldrb r1, [r2] movs r0, #0x15 ands r0, r1 adds r4, r2, #0 cmp r0, #0 beq _080903FA movs r0, #0 adds r1, r7, #0 bl sub_08090480 movs r0, #0 mov r1, r8 bl sub_08090480 _080903FA: ldrb r1, [r4] movs r0, #0x20 ands r0, r1 cmp r0, #0 beq _0809042C mov r4, r8 adds r4, #1 adds r0, r4, #0 movs r1, #1 bl sub_080002B0 movs r1, #0xc0 lsls r1, r1, #2 cmp r0, r1 beq _08090478 movs r0, #0 adds r1, r4, #0 bl sub_08090480 mov r1, r8 adds r1, #2 movs r0, #1 bl sub_08090480 b _08090478 _0809042C: mov r0, r8 adds r0, #1 movs r1, #2 bl sub_080002B0 adds r1, r0, #0 movs r0, #0xc0 lsls r0, r0, #2 cmp r1, r0 beq _08090448 adds r0, #6 cmp r1, r0 beq _0809044E b _08090456 _08090448: ldrb r1, [r4] movs r0, #8 b _08090452 _0809044E: ldrb r1, [r4] movs r0, #2 _08090452: orrs r0, r1 strb r0, [r4] _08090456: ldrb r1, [r4] movs r0, #0x2a ands r0, r1 cmp r0, #0 beq _08090478 movs r0, #0x15 ands r0, r1 cmp r0, #0 bne _08090478 movs r0, #2 adds r1, r7, #0 bl sub_08090480 movs r0, #0 mov r1, r8 bl sub_08090480 _08090478: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08090480 sub_08090480: @ 0x08090480 push {lr} ldr r2, _08090494 @ =gUnk_08121EF0 lsls r0, r0, #1 adds r0, r0, r2 ldrh r0, [r0] movs r2, #1 bl UpdateCollisionLayer pop {pc} .align 2, 0 _08090494: .4byte gUnk_08121EF0 thumb_func_start sub_08090498 sub_08090498: @ 0x08090498 push {r4, r5, lr} adds r5, r0, #0 adds r0, #0x70 ldrh r0, [r0] adds r4, r0, #0 subs r4, #0x80 adds r0, r4, #0 movs r1, #1 bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x83 ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _080904D2 adds r0, r4, #0 movs r1, #2 bl sub_080002B0 ldr r1, _08090510 @ =0x00000306 cmp r0, r1 bne _080904D2 movs r0, #0x62 adds r1, r4, #0 movs r2, #1 bl sub_08000148 _080904D2: adds r0, r5, #0 adds r0, #0x72 ldrh r0, [r0] adds r4, r0, #0 subs r4, #0x80 adds r0, r4, #0 movs r1, #1 bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x83 ldrb r1, [r0] movs r0, #2 ands r0, r1 cmp r0, #0 beq _0809050C adds r0, r4, #0 movs r1, #2 bl sub_080002B0 movs r1, #0xc2 lsls r1, r1, #2 cmp r0, r1 bne _0809050C movs r0, #0x63 adds r1, r4, #0 movs r2, #1 bl sub_08000148 _0809050C: pop {r4, r5, pc} .align 2, 0 _08090510: .4byte 0x00000306 thumb_func_start sub_08090514 sub_08090514: @ 0x08090514 push {lr} adds r2, r0, #0 ldr r0, [r2, #0x50] cmp r0, #0 beq _0809059E ldrb r0, [r0, #0xd] cmp r0, #1 beq _08090552 cmp r0, #1 bgt _0809052E cmp r0, #0 beq _08090538 b _0809059E _0809052E: cmp r0, #2 beq _08090568 cmp r0, #3 beq _08090582 b _0809059E _08090538: ldrb r1, [r2, #0x19] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r2, #0x19] adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 b _0809059A _08090552: ldrb r0, [r2, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r2, #0x19] adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 b _0809059A _08090568: ldrb r1, [r2, #0x19] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r2, #0x19] adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 b _0809059A _08090582: ldrb r1, [r2, #0x19] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r2, #0x19] adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 _0809059A: orrs r0, r1 strb r0, [r2] _0809059E: pop {pc} thumb_func_start sub_080905A0 sub_080905A0: @ 0x080905A0 push {lr} ldr r2, _080905B4 @ =gUnk_08122218 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080905B4: .4byte gUnk_08122218 thumb_func_start sub_080905B8 sub_080905B8: @ 0x080905B8 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} adds r7, r0, #0 movs r0, #1 mov sb, r0 mov r1, sb strb r1, [r7, #0xc] movs r5, #0x2e ldrsh r2, [r7, r5] ldr r6, _08090618 @ =gRoomControls ldrh r0, [r6, #6] subs r2, r2, r0 asrs r2, r2, #4 movs r4, #0x3f ands r2, r4 movs r1, #0x32 ldrsh r0, [r7, r1] ldrh r1, [r6, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r4 lsls r0, r0, #6 orrs r2, r0 adds r5, r7, #0 adds r5, #0x78 movs r0, #0 mov r8, r0 strh r2, [r5] adds r0, r7, #0 bl sub_08090DC4 adds r0, r7, #0 adds r0, #0x82 ldrh r0, [r0] ldr r1, _0809061C @ =0x00007FFF ands r1, r0 cmp r1, #0x80 beq _08090680 cmp r1, #0x80 bgt _08090620 cmp r1, #0x20 beq _080906E6 cmp r1, #0x40 beq _08090650 b _080906E0 .align 2, 0 _08090618: .4byte gRoomControls _0809061C: .4byte 0x00007FFF _08090620: movs r0, #0x80 lsls r0, r0, #2 cmp r1, r0 beq _080906E6 cmp r1, r0 bgt _08090636 movs r0, #0x80 lsls r0, r0, #1 cmp r1, r0 beq _08090640 b _080906E0 _08090636: movs r0, #0x80 lsls r0, r0, #3 cmp r1, r0 beq _080906C4 b _080906E0 _08090640: adds r1, r7, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r7, #0 bl UpdateSpriteOrderAndFlip b _080906E6 _08090650: ldrh r1, [r7, #0x32] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strh r0, [r7, #0x32] ldr r4, _0809067C @ =0x00004017 ldrh r1, [r5] subs r1, #0x80 adds r0, r4, #0 movs r2, #1 bl UpdateCollisionLayer ldrh r1, [r5] subs r1, #0x40 adds r0, r4, #0 movs r2, #1 bl UpdateCollisionLayer b _080906E6 .align 2, 0 _0809067C: .4byte 0x00004017 _08090680: mov r1, r8 strb r1, [r7, #0x1e] ldrh r1, [r7, #0x32] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strh r0, [r7, #0x32] movs r2, #0x2e ldrsh r1, [r7, r2] ldrh r0, [r6, #6] subs r1, r1, r0 asrs r1, r1, #4 ands r1, r4 movs r2, #0x32 ldrsh r0, [r7, r2] ldrh r2, [r6, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r4 lsls r0, r0, #6 orrs r1, r0 strh r1, [r5] ldr r0, _080906C0 @ =0x00004026 ldrh r1, [r5] adds r2, r7, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer b _080906E6 .align 2, 0 _080906C0: .4byte 0x00004026 _080906C4: adds r0, r7, #0 bl sub_08090E64 ldrb r0, [r7, #0xb] cmp r0, #0 beq _080906E0 adds r0, r7, #0 adds r0, #0x62 mov r5, sb strb r5, [r0] adds r1, r7, #0 adds r1, #0x80 movs r0, #0x30 strb r0, [r1] _080906E0: adds r0, r7, #0 bl sub_08090B6C _080906E6: adds r0, r7, #0 adds r0, #0x81 ldrb r1, [r0] cmp r1, #0x10 beq _0809075C movs r0, #0x70 ands r0, r1 adds r4, r7, #0 adds r4, #0x78 cmp r0, #0x20 beq _0809072E cmp r0, #0x30 bne _0809073A ldrh r0, [r4] subs r0, #0x40 strh r0, [r4] adds r0, r7, #0 bl sub_08090B6C movs r0, #0x2e ldrsh r1, [r7, r0] ldr r2, _08090778 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r5, #0x32 ldrsh r0, [r7, r5] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 strh r1, [r4] _0809072E: ldrh r0, [r4] adds r0, #0x40 strh r0, [r4] adds r0, r7, #0 bl sub_08090B6C _0809073A: movs r0, #0x2e ldrsh r1, [r7, r0] ldr r2, _08090778 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r5, #0x32 ldrsh r0, [r7, r5] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 strh r1, [r4] _0809075C: adds r0, r7, #0 adds r0, #0x82 ldrh r0, [r0] ldr r1, _0809077C @ =0x00007FFF ands r1, r0 cmp r1, #2 beq _08090780 cmp r1, #4 bne _080907C8 adds r0, r7, #0 movs r1, #0x7e bl sub_0801D2B4 b _080907C8 .align 2, 0 _08090778: .4byte gRoomControls _0809077C: .4byte 0x00007FFF _08090780: adds r0, r7, #0 adds r0, #0x78 ldrh r0, [r0] adds r4, r0, #0 subs r4, #0x81 ldrb r0, [r7, #0xa] movs r1, #2 mov r8, r1 cmp r0, #0x1a beq _08090798 movs r2, #3 mov r8, r2 _08090798: movs r5, #0 cmp r5, r8 bhs _080907C8 ldr r6, _080907DC @ =0x00004026 _080907A0: adds r0, r6, #0 adds r1, r4, #0 movs r2, #2 bl UpdateCollisionLayer adds r0, r6, #0 adds r1, r4, #0 movs r2, #1 bl UpdateCollisionLayer adds r1, r4, #0 adds r1, #0x40 movs r0, #0 movs r2, #1 bl sub_080001D0 adds r5, #1 adds r4, #1 cmp r5, r8 blo _080907A0 _080907C8: ldrb r0, [r7, #0xa] subs r0, #1 cmp r0, #0x3b bls _080907D2 b _080909DC _080907D2: lsls r0, r0, #2 ldr r1, _080907E0 @ =_080907E4 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080907DC: .4byte 0x00004026 _080907E0: .4byte _080907E4 _080907E4: @ jump table .4byte _080908D4 @ case 0 .4byte _080909DC @ case 1 .4byte _080909DC @ case 2 .4byte _080909DC @ case 3 .4byte _080909DC @ case 4 .4byte _080909DC @ case 5 .4byte _080909DC @ case 6 .4byte _080909DC @ case 7 .4byte _080908F0 @ case 8 .4byte _080909DC @ case 9 .4byte _080909DC @ case 10 .4byte _080909DC @ case 11 .4byte _080909DC @ case 12 .4byte _080909DC @ case 13 .4byte _080909DC @ case 14 .4byte _080909DC @ case 15 .4byte _080909DC @ case 16 .4byte _080909DC @ case 17 .4byte _080909DC @ case 18 .4byte _080909DC @ case 19 .4byte _080909DC @ case 20 .4byte _080909DC @ case 21 .4byte _080909DC @ case 22 .4byte _080909DC @ case 23 .4byte _080909DC @ case 24 .4byte _080909DC @ case 25 .4byte _080909DC @ case 26 .4byte _080909DC @ case 27 .4byte _080909DC @ case 28 .4byte _08090920 @ case 29 .4byte _08090938 @ case 30 .4byte _080909DC @ case 31 .4byte _080909DC @ case 32 .4byte _080909DC @ case 33 .4byte _080909DC @ case 34 .4byte _080909DC @ case 35 .4byte _080909DC @ case 36 .4byte _080909DC @ case 37 .4byte _080909DC @ case 38 .4byte _08090984 @ case 39 .4byte _080909DC @ case 40 .4byte _080909DC @ case 41 .4byte _080909DC @ case 42 .4byte _080909DC @ case 43 .4byte _080909DC @ case 44 .4byte _080909DC @ case 45 .4byte _080909DC @ case 46 .4byte _080909DC @ case 47 .4byte _080909DC @ case 48 .4byte _080909DC @ case 49 .4byte _080909DC @ case 50 .4byte _080909DC @ case 51 .4byte _080909DC @ case 52 .4byte _080909DC @ case 53 .4byte _080909DC @ case 54 .4byte _080909DC @ case 55 .4byte _080909DC @ case 56 .4byte _080909DC @ case 57 .4byte _08090994 @ case 58 .4byte _080909C8 @ case 59 _080908D4: ldrb r0, [r7, #0xb] cmp r0, #0 bne _080908DC b _080909DC _080908DC: adds r2, r7, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] b _080909DC _080908F0: movs r0, #0x4d movs r1, #0x3e movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _080909DC movs r3, #0x80 lsls r3, r3, #0xd adds r0, r7, #0 adds r1, r4, #0 adds r2, r3, #0 bl PositionRelative movs r0, #1 strb r0, [r4, #0x1e] ldrb r1, [r4, #0x11] subs r0, #0x11 ands r0, r1 movs r1, #2 orrs r0, r1 strb r0, [r4, #0x11] b _080909DC _08090920: ldr r0, _08090934 @ =0x00000306 adds r1, r7, #0 adds r1, #0x78 ldrh r1, [r1] adds r1, #0x41 movs r2, #2 bl sub_0807B7D8 b _080909DC .align 2, 0 _08090934: .4byte 0x00000306 _08090938: adds r5, r7, #0 adds r5, #0x38 movs r0, #1 strb r0, [r5] ldrb r1, [r7, #0x1b] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r7, #0x1b] ldr r0, _0809097C @ =0x00004074 adds r4, r7, #0 adds r4, #0x78 ldrh r1, [r4] subs r1, #0x40 ldrb r2, [r5] bl UpdateCollisionLayer ldrh r1, [r4] subs r1, #0x40 ldrb r2, [r5] movs r0, #0x3f bl sub_080001D0 ldr r6, _08090980 @ =0x00004017 ldrh r1, [r4] ldrb r2, [r5] adds r0, r6, #0 bl UpdateCollisionLayer ldrh r1, [r4] adds r1, #0x40 ldrb r2, [r5] b _080909BC .align 2, 0 _0809097C: .4byte 0x00004074 _08090980: .4byte 0x00004017 _08090984: ldrb r0, [r7, #0xb] cmp r0, #0 beq _080909DC adds r1, r7, #0 adds r1, #0x62 movs r0, #0xfc strb r0, [r1] b _080909DC _08090994: ldr r6, _080909C4 @ =0x00004023 adds r5, r7, #0 adds r5, #0x78 ldrh r1, [r5] subs r1, #0x41 adds r4, r7, #0 adds r4, #0x38 ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer ldrh r1, [r5] subs r1, #0x40 ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer ldrh r1, [r5] subs r1, #0x3f ldrb r2, [r4] _080909BC: adds r0, r6, #0 bl UpdateCollisionLayer b _080909DC .align 2, 0 _080909C4: .4byte 0x00004023 _080909C8: ldr r0, _080909E4 @ =0x00004022 adds r1, r7, #0 adds r1, #0x78 ldrh r1, [r1] adds r1, #0x41 adds r2, r7, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer _080909DC: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 _080909E4: .4byte 0x00004022 thumb_func_start sub_080909E8 sub_080909E8: @ 0x080909E8 push {r4, r5, r6, lr} adds r5, r0, #0 adds r0, #0x82 ldrh r0, [r0] ldr r1, _08090A04 @ =0x00007FFF ands r1, r0 cmp r1, #8 beq _08090A42 cmp r1, #8 bgt _08090A08 cmp r1, #1 beq _08090A12 b _08090B60 .align 2, 0 _08090A04: .4byte 0x00007FFF _08090A08: cmp r1, #0x10 beq _08090A68 cmp r1, #0x80 beq _08090AB0 b _08090B60 _08090A12: ldr r2, _08090A34 @ =gLinkEntity movs r0, #0x32 ldrsh r1, [r2, r0] movs r3, #0x32 ldrsh r0, [r5, r3] cmp r1, r0 blt _08090A26 adds r0, #0x18 cmp r1, r0 ble _08090A38 _08090A26: ldrb r0, [r5, #0x19] movs r1, #0x3f ands r1, r0 movs r0, #0x80 orrs r1, r0 strb r1, [r5, #0x19] b _08090B60 .align 2, 0 _08090A34: .4byte gLinkEntity _08090A38: ldrb r0, [r5, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r5, #0x19] b _08090B60 _08090A42: ldrb r0, [r5, #0xe] adds r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x10 beq _08090A52 b _08090B60 _08090A52: movs r0, #0 strb r0, [r5, #0xe] ldrb r0, [r5, #0xf] adds r0, #1 movs r1, #3 ands r0, r1 strb r0, [r5, #0xf] adds r0, r5, #0 bl sub_08090E4C b _08090B60 _08090A68: ldrb r0, [r5, #0xa] cmp r0, #0x3e beq _08090A8C ldrb r0, [r5, #0xe] adds r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x14 bne _08090B60 ldrb r0, [r5, #0x1e] adds r0, #1 movs r1, #3 ands r0, r1 strb r0, [r5, #0x1e] movs r0, #0 strb r0, [r5, #0xe] b _08090B60 _08090A8C: ldrb r0, [r5, #0xe] adds r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xe bne _08090B60 movs r0, #0 strb r0, [r5, #0xe] ldrb r0, [r5, #0xf] adds r0, #1 movs r1, #3 bl __modsi3 strb r0, [r5, #0xf] adds r0, #1 strb r0, [r5, #0x1e] b _08090B60 _08090AB0: ldr r2, _08090B00 @ =gLinkEntity movs r3, #0x32 ldrsh r1, [r2, r3] movs r3, #0x32 ldrsh r0, [r5, r3] adds r0, #8 cmp r1, r0 bge _08090B14 ldr r0, _08090B04 @ =gLinkState ldrb r0, [r0, #0x12] cmp r0, #0x1e beq _08090B60 adds r0, r5, #0 bl sub_080002A0 ldr r1, _08090B08 @ =0x00004017 cmp r0, r1 bne _08090B60 ldr r0, _08090B0C @ =0x00004026 adds r4, r5, #0 adds r4, #0x78 ldrh r1, [r4] adds r5, #0x38 ldrb r2, [r5] bl UpdateCollisionLayer ldr r6, _08090B10 @ =0x0000403D ldrh r1, [r4] subs r1, #0x40 ldrb r2, [r5] adds r0, r6, #0 bl UpdateCollisionLayer ldrh r1, [r4] subs r1, #0x80 ldrb r2, [r5] adds r0, r6, #0 bl UpdateCollisionLayer b _08090B60 .align 2, 0 _08090B00: .4byte gLinkEntity _08090B04: .4byte gLinkState _08090B08: .4byte 0x00004017 _08090B0C: .4byte 0x00004026 _08090B10: .4byte 0x0000403D _08090B14: adds r3, r2, #0 adds r3, #0x38 ldrb r1, [r3] movs r0, #2 ands r0, r1 cmp r0, #0 beq _08090B2C movs r0, #1 strb r0, [r3] adds r0, r2, #0 bl UpdateSpriteOrderAndFlip _08090B2C: adds r0, r5, #0 bl sub_080002A0 ldr r6, _08090B64 @ =0x00004017 cmp r0, r6 beq _08090B60 adds r4, r5, #0 adds r4, #0x78 ldrh r1, [r4] adds r5, #0x38 ldrb r2, [r5] adds r0, r6, #0 bl UpdateCollisionLayer ldrh r1, [r4] subs r1, #0x40 ldrb r2, [r5] adds r0, r6, #0 bl UpdateCollisionLayer ldr r0, _08090B68 @ =0x00004014 ldrh r1, [r4] subs r1, #0x80 ldrb r2, [r5] bl UpdateCollisionLayer _08090B60: pop {r4, r5, r6, pc} .align 2, 0 _08090B64: .4byte 0x00004017 _08090B68: .4byte 0x00004014 thumb_func_start sub_08090B6C sub_08090B6C: @ 0x08090B6C push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r1, r0, #0 adds r0, #0x80 ldrb r0, [r0] lsls r0, r0, #0x18 cmp r0, #0 bne _08090B80 b _08090CD2 _08090B80: lsrs r0, r0, #0x1b lsls r2, r0, #0x18 lsrs r3, r2, #0x18 ldrh r0, [r1, #0x2e] movs r4, #0xf mov r8, r4 ands r4, r0 mov r8, r4 adds r0, r1, #0 adds r0, #0x78 ldrh r6, [r0] subs r0, #0x40 ldrb r7, [r0] movs r0, #3 ands r0, r3 cmp r0, #1 beq _08090BF8 cmp r0, #1 blo _08090BB0 cmp r0, #2 beq _08090C48 cmp r0, #3 beq _08090C90 b _08090CD2 _08090BB0: lsrs r5, r2, #0x1b cmp r3, #0xc bne _08090BB8 movs r5, #2 _08090BB8: rsbs r4, r5, #0 cmp r4, r5 bgt _08090BCE _08090BBE: adds r1, r6, r4 ldr r0, _08090BE4 @ =0x00004022 adds r2, r7, #0 bl UpdateCollisionLayer adds r4, #1 cmp r4, r5 ble _08090BBE _08090BCE: movs r0, #8 mov r1, r8 ands r1, r0 cmp r1, #0 beq _08090BEC ldr r0, _08090BE8 @ =0x00004024 subs r1, r6, r4 adds r2, r7, #0 bl sub_08090CDC b _08090CB2 .align 2, 0 _08090BE4: .4byte 0x00004022 _08090BE8: .4byte 0x00004024 _08090BEC: ldr r0, _08090BF4 @ =0x00004022 subs r1, r6, r4 b _08090C6E .align 2, 0 _08090BF4: .4byte 0x00004022 _08090BF8: lsrs r5, r2, #0x1b rsbs r4, r5, #0 cmp r4, r5 bgt _08090C10 _08090C00: adds r1, r6, r4 ldr r0, _08090C2C @ =0x00004022 adds r2, r7, #0 bl UpdateCollisionLayer adds r4, #1 cmp r4, r5 ble _08090C00 _08090C10: movs r0, #8 mov r1, r8 ands r1, r0 cmp r1, #0 beq _08090C34 ldr r0, _08090C30 @ =0x00004024 subs r1, r6, r4 adds r2, r7, #0 bl sub_08090CDC cmp r4, #0 beq _08090CD2 b _08090C6A .align 2, 0 _08090C2C: .4byte 0x00004022 _08090C30: .4byte 0x00004024 _08090C34: cmp r4, #0 beq _08090CB2 ldr r0, _08090C44 @ =0x00004022 subs r1, r6, r4 adds r2, r7, #0 bl UpdateCollisionLayer b _08090CB2 .align 2, 0 _08090C44: .4byte 0x00004022 _08090C48: lsrs r5, r2, #0x1a rsbs r4, r5, #0 cmp r4, r5 bge _08090C60 _08090C50: adds r1, r6, r4 ldr r0, _08090C78 @ =0x00004022 adds r2, r7, #0 bl UpdateCollisionLayer adds r4, #1 cmp r4, r5 blt _08090C50 _08090C60: movs r0, #8 mov r1, r8 ands r1, r0 cmp r1, #0 beq _08090C7C _08090C6A: ldr r0, _08090C78 @ =0x00004022 adds r1, r6, r4 _08090C6E: adds r2, r7, #0 bl UpdateCollisionLayer b _08090CD2 .align 2, 0 _08090C78: .4byte 0x00004022 _08090C7C: ldr r0, _08090C8C @ =0x00004024 subs r1, r6, r4 subs r1, #1 adds r2, r7, #0 bl sub_08090CDC b _08090CB2 .align 2, 0 _08090C8C: .4byte 0x00004024 _08090C90: lsrs r5, r2, #0x1a rsbs r4, r5, #0 cmp r4, r5 bgt _08090CA8 _08090C98: adds r1, r6, r4 ldr r0, _08090CC0 @ =0x00004022 adds r2, r7, #0 bl UpdateCollisionLayer adds r4, #1 cmp r4, r5 ble _08090C98 _08090CA8: movs r0, #8 mov r1, r8 ands r1, r0 cmp r1, #0 beq _08090CC8 _08090CB2: ldr r0, _08090CC4 @ =0x00004025 adds r1, r6, r4 adds r2, r7, #0 bl sub_08090CDC b _08090CD2 .align 2, 0 _08090CC0: .4byte 0x00004022 _08090CC4: .4byte 0x00004025 _08090CC8: ldr r0, _08090CD8 @ =0x00004024 subs r1, r6, r4 adds r2, r7, #0 bl sub_08090CDC _08090CD2: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08090CD8: .4byte 0x00004024 thumb_func_start sub_08090CDC sub_08090CDC: @ 0x08090CDC push {r4, r5, r6, lr} adds r4, r0, #0 adds r5, r1, #0 adds r6, r2, #0 adds r0, r5, #0 adds r1, r6, #0 bl sub_080001DA lsls r0, r0, #0x10 lsrs r2, r0, #0x10 movs r0, #0x80 lsls r0, r0, #7 ands r0, r2 cmp r0, #0 bne _08090D06 adds r0, r4, #0 adds r1, r5, #0 adds r2, r6, #0 bl UpdateCollisionLayer b _08090DB2 _08090D06: ldr r1, _08090D18 @ =0xFFFFBFDE adds r0, r2, r1 cmp r0, #0xb bhi _08090DB2 lsls r0, r0, #2 ldr r1, _08090D1C @ =_08090D20 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08090D18: .4byte 0xFFFFBFDE _08090D1C: .4byte _08090D20 _08090D20: @ jump table .4byte _08090DB2 @ case 0 .4byte _08090DB2 @ case 1 .4byte _08090D80 @ case 2 .4byte _08090D50 @ case 3 .4byte _08090DB2 @ case 4 .4byte _08090DB2 @ case 5 .4byte _08090DB2 @ case 6 .4byte _08090DB2 @ case 7 .4byte _08090DB2 @ case 8 .4byte _08090DB2 @ case 9 .4byte _08090D98 @ case 10 .4byte _08090D68 @ case 11 _08090D50: ldr r0, _08090D5C @ =0x00004024 cmp r4, r0 bne _08090D58 ldr r2, _08090D60 @ =0x00004022 _08090D58: ldr r0, _08090D64 @ =0x0000402C b _08090DA2 .align 2, 0 _08090D5C: .4byte 0x00004024 _08090D60: .4byte 0x00004022 _08090D64: .4byte 0x0000402C _08090D68: ldr r0, _08090D74 @ =0x0000402C cmp r4, r0 bne _08090D70 ldr r2, _08090D78 @ =0x0000402B _08090D70: ldr r0, _08090D7C @ =0x00004024 b _08090DA2 .align 2, 0 _08090D74: .4byte 0x0000402C _08090D78: .4byte 0x0000402B _08090D7C: .4byte 0x00004024 _08090D80: ldr r0, _08090D8C @ =0x00004025 cmp r4, r0 bne _08090D88 ldr r2, _08090D90 @ =0x00004022 _08090D88: ldr r0, _08090D94 @ =0x0000402D b _08090DA2 .align 2, 0 _08090D8C: .4byte 0x00004025 _08090D90: .4byte 0x00004022 _08090D94: .4byte 0x0000402D _08090D98: ldr r0, _08090DB4 @ =0x0000402D cmp r4, r0 bne _08090DA0 ldr r2, _08090DB8 @ =0x0000402B _08090DA0: ldr r0, _08090DBC @ =0x00004025 _08090DA2: cmp r4, r0 bne _08090DA8 ldr r2, _08090DC0 @ =0x00004022 _08090DA8: adds r0, r2, #0 adds r1, r5, #0 adds r2, r6, #0 bl UpdateCollisionLayer _08090DB2: pop {r4, r5, r6, pc} .align 2, 0 _08090DB4: .4byte 0x0000402D _08090DB8: .4byte 0x0000402B _08090DBC: .4byte 0x00004025 _08090DC0: .4byte 0x00004022 thumb_func_start sub_08090DC4 sub_08090DC4: @ 0x08090DC4 push {r4, lr} mov ip, r0 ldrb r0, [r0, #0xa] lsls r0, r0, #3 ldr r1, _08090E44 @ =gUnk_08121EF8 adds r3, r0, r1 ldrh r1, [r3, #6] movs r0, #0x80 lsls r0, r0, #8 ands r0, r1 cmp r0, #0 beq _08090DF4 ldr r1, _08090E48 @ =gUnk_08122220 movs r0, #3 ldrsb r0, [r3, r0] lsls r0, r0, #2 adds r0, r0, r1 ldr r3, [r0] mov r0, ip ldrb r1, [r0, #0xb] lsls r0, r1, #3 adds r3, r3, r0 mov r0, ip strb r1, [r0, #0x1e] _08090DF4: ldrb r1, [r3] mov r0, ip adds r0, #0x80 strb r1, [r0] ldrb r0, [r3, #1] mov r1, ip adds r1, #0x81 strb r0, [r1] ldrb r0, [r3, #2] subs r1, #0x1f strb r0, [r1] ldrb r0, [r3, #3] adds r1, #1 strb r0, [r1] ldrb r1, [r3, #4] lsls r1, r1, #6 mov r0, ip ldrb r2, [r0, #0x19] movs r0, #0x3f ands r0, r2 orrs r0, r1 mov r1, ip strb r0, [r1, #0x19] ldrb r0, [r3, #5] mov r4, ip adds r4, #0x29 movs r1, #7 ands r1, r0 ldrb r2, [r4] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4] ldrh r1, [r3, #6] mov r0, ip adds r0, #0x82 strh r1, [r0] pop {r4, pc} .align 2, 0 _08090E44: .4byte gUnk_08121EF8 _08090E48: .4byte gUnk_08122220 thumb_func_start sub_08090E4C sub_08090E4C: @ 0x08090E4C push {lr} ldr r2, _08090E60 @ =gUnk_08122244 ldrb r1, [r0, #0xf] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl sub_0801D2B4 pop {pc} .align 2, 0 _08090E60: .4byte gUnk_08122244 thumb_func_start sub_08090E64 sub_08090E64: @ 0x08090E64 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0x2a movs r1, #0 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08090EA0 ldr r0, _08090EA4 @ =0x0000FFFE adds r2, r0, #0 ldrb r0, [r5, #0xb] adds r2, r2, r0 lsls r2, r2, #0x10 adds r0, r5, #0 adds r1, r4, #0 movs r3, #0 bl PositionRelative ldrh r0, [r4, #0x36] subs r0, #0x10 strh r0, [r4, #0x36] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip _08090EA0: pop {r4, r5, pc} .align 2, 0 _08090EA4: .4byte 0x0000FFFE thumb_func_start sub_08090EA8 sub_08090EA8: @ 0x08090EA8 push {lr} ldr r2, _08090EBC @ =gUnk_08122254 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08090EBC: .4byte gUnk_08122254 thumb_func_start sub_08090EC0 sub_08090EC0: @ 0x08090EC0 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldrb r0, [r4, #0xb] strb r0, [r4, #0x1e] bl sub_08052660 cmp r0, #0 beq _08090EFE ldrb r0, [r4, #0x1e] adds r0, #4 strb r0, [r4, #0x1e] adds r0, r4, #0 bl sub_080AE068 movs r1, #0xc2 lsls r1, r1, #1 adds r0, r4, #0 bl sub_080ADF80 _08090EFE: pop {r4, pc} thumb_func_start sub_08090F00 sub_08090F00: @ 0x08090F00 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r1, [r4, #0xa] cmp r1, #1 bne _08090F1C ldr r0, [r4, #0x50] ldrb r2, [r4, #0xf] lsls r1, r2 ldr r0, [r0, #0x20] ands r0, r1 cmp r0, #0 bne _08090F1C bl sub_0805E780 _08090F1C: ldr r6, _08090F64 @ =gLinkState ldr r0, [r6, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _08090F62 ldr r5, _08090F68 @ =gLinkEntity adds r0, r4, #0 adds r1, r5, #0 movs r2, #4 movs r3, #4 bl sub_080041A0 cmp r0, #0 beq _08090F62 movs r1, #0x36 ldrsh r0, [r5, r1] cmp r0, #0 bne _08090F62 adds r2, r6, #0 adds r2, #0x90 ldr r1, _08090F6C @ =gUnk_0812225C ldrb r0, [r4, #0xb] lsls r0, r0, #1 adds r0, r0, r1 ldrh r1, [r2] ldrh r0, [r0] ands r0, r1 cmp r0, #0 beq _08090F62 ldrb r0, [r4, #0xe] bl sub_0804B128 bl sub_08080840 _08090F62: pop {r4, r5, r6, pc} .align 2, 0 _08090F64: .4byte gLinkState _08090F68: .4byte gLinkEntity _08090F6C: .4byte gUnk_0812225C thumb_func_start sub_08090F70 sub_08090F70: @ 0x08090F70 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08090FB4 movs r5, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r5 strb r0, [r4, #0x18] ldrb r0, [r4, #0xb] strb r0, [r4, #0x1e] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip bl sub_08052660 cmp r0, #0 beq _08090FB4 adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 orrs r0, r5 strb r0, [r2] _08090FB4: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08090FB8 sub_08090FB8: @ 0x08090FB8 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08090FF6 movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] ldrb r1, [r4, #0xa] adds r0, r4, #0 bl UpdateSprite _08090FF6: pop {r4, pc} thumb_func_start sub_08090FF8 sub_08090FF8: @ 0x08090FF8 push {lr} ldr r2, _0809100C @ =gUnk_08122278 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809100C: .4byte gUnk_08122278 thumb_func_start sub_08091010 sub_08091010: @ 0x08091010 push {r4, r5, r6, r7, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08091094 @ =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 r3, r4, #0 adds r3, #0x74 strh r1, [r3] adds r0, r4, #0 adds r0, #0x38 ldrb r5, [r0] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldrh r0, [r3] subs r0, #0x80 lsls r0, r0, #0x10 lsrs r4, r0, #0x10 ldr r6, _08091098 @ =0x00004022 movs r7, #4 _0809105C: subs r1, r4, #2 adds r0, r6, #0 adds r2, r5, #0 bl UpdateCollisionLayer subs r1, r4, #1 adds r0, r6, #0 adds r2, r5, #0 bl UpdateCollisionLayer adds r0, r6, #0 adds r1, r4, #0 adds r2, r5, #0 bl UpdateCollisionLayer adds r1, r4, #1 adds r0, r6, #0 adds r2, r5, #0 bl UpdateCollisionLayer adds r0, r4, #0 adds r0, #0x40 lsls r0, r0, #0x10 lsrs r4, r0, #0x10 subs r7, #1 cmp r7, #0 bge _0809105C pop {r4, r5, r6, r7, pc} .align 2, 0 _08091094: .4byte gRoomControls _08091098: .4byte 0x00004022 thumb_func_start nullsub_523 nullsub_523: @ 0x0809109C bx lr .align 2, 0 thumb_func_start sub_080910A0 sub_080910A0: @ 0x080910A0 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _080910C8 ldrb r0, [r4, #0xa] bl sub_0807CBD0 cmp r0, #0 beq _080910B8 bl sub_0805E780 _080910B8: movs r1, #1 strb r1, [r4, #0xc] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] adds r0, r4, #0 bl sub_08078828 _080910C8: adds r0, r4, #0 adds r0, #0x39 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 beq _08091100 movs r1, #0x2e ldrsh r0, [r4, r1] ldr r2, _08091104 @ =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 movs r1, #2 bl sub_080A7C8C bl sub_0805E780 _08091100: pop {r4, r5, pc} .align 2, 0 _08091104: .4byte gRoomControls thumb_func_start sub_08091108 sub_08091108: @ 0x08091108 push {lr} ldr r2, _0809111C @ =gUnk_08122280 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809111C: .4byte gUnk_08122280 thumb_func_start sub_08091120 sub_08091120: @ 0x08091120 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] ldr r3, _08091194 @ =gUnk_08122288 ldrb r0, [r4, #0xa] lsls r0, r0, #2 adds r0, r0, r3 ldrb r1, [r0, #2] adds r0, r4, #0 adds r0, #0x60 strh r1, [r0] ldrb r0, [r4, #0xa] lsls r0, r0, #2 adds r0, r0, r3 ldrb r1, [r0, #1] movs r0, #0xf ands r1, r0 ldrb r2, [r4, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x1a] ldrb r0, [r4, #0xa] lsls r0, r0, #2 adds r0, r0, r3 ldrb r0, [r0, #3] strh r0, [r4, #0x12] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] ldrb r1, [r4, #0x19] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x19] movs r0, #0xa8 lsls r0, r0, #0xa str r0, [r4, #0x20] ldrb r0, [r4, #0xa] lsls r0, r0, #2 adds r0, r0, r3 ldrb r1, [r0] adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 bl sub_08004168 pop {r4, pc} .align 2, 0 _08091194: .4byte gUnk_08122288 thumb_func_start sub_08091198 sub_08091198: @ 0x08091198 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x20] cmp r0, #0 bge _080911AA ldrb r0, [r4, #0x18] movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x18] _080911AA: movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _080911E8 ldrb r1, [r4, #0xb] cmp r1, #0xf beq _080911CE cmp r1, #0xf bgt _080911C8 cmp r1, #0 beq _080911E4 b _080911DA _080911C8: cmp r1, #0xff bne _080911DA b _080911E4 _080911CE: ldrb r1, [r4, #0xe] adds r0, r4, #0 movs r2, #0x80 bl CreateFx b _080911E4 _080911DA: ldrb r2, [r4, #0xe] adds r0, r4, #0 movs r3, #0 bl CreateObjectWithParent _080911E4: bl sub_0805E780 _080911E8: pop {r4, pc} .align 2, 0 thumb_func_start sub_080911EC sub_080911EC: @ 0x080911EC push {r4, lr} adds r4, r0, #0 adds r0, #0x72 ldrh r0, [r0] cmp r0, #1 beq _0809123C cmp r0, #1 bgt _08091202 cmp r0, #0 beq _08091208 b _08091260 _08091202: cmp r0, #2 beq _08091254 b _08091260 _08091208: ldr r1, _08091234 @ =gUnk_08122294 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl sub_0800445C ldr r1, _08091238 @ =gUnk_02021F00 adds r0, r4, #0 adds r0, #0x74 ldrb r0, [r0] lsls r0, r0, #1 adds r0, r0, r1 adds r1, r4, #0 adds r1, #0x70 ldrh r1, [r1] strh r1, [r0] b _08091260 .align 2, 0 _08091234: .4byte gUnk_08122294 _08091238: .4byte gUnk_02021F00 _0809123C: ldr r0, _08091250 @ =gUnk_081222A0 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 b _08091260 .align 2, 0 _08091250: .4byte gUnk_081222A0 _08091254: ldrb r0, [r4, #0xc] cmp r0, #0 bne _08091260 adds r0, r4, #0 bl sub_08091504 _08091260: pop {r4, pc} .align 2, 0 thumb_func_start sub_08091264 sub_08091264: @ 0x08091264 push {r4, r5, r6, r7, lr} adds r6, r0, #0 ldr r0, _080912C4 @ =gUnk_03003DBC ldrb r0, [r0] cmp r0, #0x45 bhi _0809132C ldrb r1, [r6, #0xa] ldrb r2, [r6, #0xb] movs r0, #0x54 bl CreateObject adds r7, r0, #0 ldrb r1, [r6, #0xa] ldrb r2, [r6, #0xb] movs r0, #0x54 bl CreateObject adds r1, r0, #0 str r6, [r7, #0x50] str r6, [r1, #0x50] adds r0, r7, #0 adds r0, #0x72 movs r5, #1 movs r4, #1 strh r4, [r0] adds r2, r1, #0 adds r2, #0x72 movs r0, #2 strh r0, [r2] adds r0, r6, #0 bl CopyPosition movs r2, #1 strb r5, [r6, #0xc] ldrb r1, [r6, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r6, #0x18] movs r0, #0x60 strh r0, [r6, #0x24] ldrb r0, [r6, #0xb] ands r4, r0 cmp r4, #0 beq _080912CC ldr r0, _080912C8 @ =gUnk_080FD278 b _080912CE .align 2, 0 _080912C4: .4byte gUnk_03003DBC _080912C8: .4byte gUnk_080FD278 _080912CC: ldr r0, _08091330 @ =gUnk_080FD270 _080912CE: str r0, [r6, #0x48] movs r0, #1 strb r0, [r6, #0x16] ldr r2, _08091334 @ =gUnk_081222A8 ldrb r0, [r6, #0xb] lsls r0, r0, #1 adds r0, r0, r2 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r6, #0x2e] adds r0, r0, r1 strh r0, [r6, #0x2e] adds r1, r6, #0 adds r1, #0x80 strh r0, [r1] ldrb r0, [r6, #0xb] lsls r0, r0, #1 adds r0, #1 adds r0, r0, r2 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r6, #0x32] adds r0, r0, r1 strh r0, [r6, #0x32] adds r1, r6, #0 adds r1, #0x82 strh r0, [r1] adds r0, r6, #0 adds r1, r7, #0 bl CopyPosition adds r0, r6, #0 adds r0, #0x7e ldrb r0, [r0] adds r1, r6, #0 adds r1, #0x76 strh r0, [r1] ldrb r1, [r6, #0xe] adds r0, r6, #0 adds r0, #0x74 strb r1, [r0] ldrb r1, [r6, #0xb] adds r0, r6, #0 bl UpdateSprite _0809132C: pop {r4, r5, r6, r7, pc} .align 2, 0 _08091330: .4byte gUnk_080FD270 _08091334: .4byte gUnk_081222A8 thumb_func_start sub_08091338 sub_08091338: @ 0x08091338 push {r4, lr} adds r4, r0, #0 bl sub_08078930 adds r0, r4, #0 adds r0, #0x70 ldrh r0, [r0] cmp r0, #0 beq _0809135C ldrb r0, [r4, #0xb] lsls r0, r0, #3 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_0806F69C adds r0, r4, #0 bl sub_08091660 _0809135C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08091360 sub_08091360: @ 0x08091360 push {r4, lr} adds r4, r0, #0 bl sub_0806FBB4 ldr r1, _0809137C @ =gUnk_081222B0 ldrb r0, [r4, #0xd] subs r0, #5 lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 pop {r4, pc} .align 2, 0 _0809137C: .4byte gUnk_081222B0 thumb_func_start sub_08091380 sub_08091380: @ 0x08091380 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldr r7, _0809142C @ =gLinkEntity adds r0, #0x75 ldrb r0, [r0] cmp r0, #0 bne _080913E0 ldrb r0, [r4, #0xb] lsls r2, r0, #1 ldrb r0, [r7, #0x14] cmp r2, r0 bne _080913D4 ldr r1, _08091430 @ =gUnk_081222B8 adds r0, r2, r1 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r3, [r4, #0x2e] adds r0, r0, r3 lsls r0, r0, #0x10 lsrs r6, r0, #0x10 adds r0, r2, #1 adds r0, r0, r1 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r4, #0x32] adds r0, r0, r1 lsls r0, r0, #0x10 lsrs r5, r0, #0x10 adds r0, r7, #0 adds r0, #0x38 ldrb r2, [r0] adds r0, r6, #0 adds r1, r5, #0 bl sub_080002D4 subs r0, #0xf cmp r0, #0x10 bls _080913D4 strh r6, [r7, #0x2e] strh r5, [r7, #0x32] _080913D4: adds r1, r4, #0 adds r1, #0x75 movs r0, #1 strb r0, [r1] movs r0, #2 strb r0, [r4, #0xf] _080913E0: ldrb r0, [r7, #0x14] lsrs r0, r0, #1 ldrb r3, [r4, #0xb] cmp r0, r3 bne _0809142A ldr r1, _08091434 @ =gLinkState adds r0, r1, #0 adds r0, #0xa8 ldrb r0, [r0] cmp r0, #0x1a bne _0809142A ldrb r1, [r1, #5] movs r5, #2 adds r0, r5, #0 ands r0, r1 cmp r0, #0 beq _0809142A ldr r0, _0809142C @ =gLinkEntity adds r0, #0x5a ldrb r1, [r0] adds r0, r5, #0 ands r0, r1 cmp r0, #0 beq _0809142A adds r0, r4, #0 bl sub_0809153C adds r1, r4, #0 adds r1, #0x75 ldrb r0, [r1] cmp r0, #1 bne _0809142A strb r5, [r1] movs r0, #0xcf lsls r0, r0, #1 bl sub_08004488 _0809142A: pop {r4, r5, r6, r7, pc} .align 2, 0 _0809142C: .4byte gLinkEntity _08091430: .4byte gUnk_081222B8 _08091434: .4byte gLinkState thumb_func_start sub_08091438 sub_08091438: @ 0x08091438 movs r2, #0 movs r1, #1 strb r1, [r0, #0xc] adds r0, #0x75 strb r2, [r0] bx lr thumb_func_start sub_08091444 sub_08091444: @ 0x08091444 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] subs r0, #9 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r2] ldr r0, [r4, #0x50] ldrb r1, [r0, #0xb] adds r1, #8 adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 bl UpdateSpriteOrderAndFlip pop {r4, pc} thumb_func_start sub_08091470 sub_08091470: @ 0x08091470 push {r4, lr} adds r2, r0, #0 ldr r4, [r2, #0x50] adds r3, r4, #0 adds r3, #0x70 ldrh r0, [r3] cmp r0, #7 bhi _0809148C ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2, #0x18] b _08091502 _0809148C: ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r2, #0x18] ldrh r0, [r3] adds r1, r0, #0 subs r1, #8 movs r0, #7 ands r1, r0 ldrb r3, [r2, #0xb] cmp r3, #1 beq _080914C8 cmp r3, #1 bgt _080914B4 cmp r3, #0 beq _080914BE b _080914E2 _080914B4: cmp r3, #2 beq _080914D0 cmp r3, #3 beq _080914DA b _080914E2 _080914BE: ldrh r0, [r4, #0x32] subs r0, r0, r1 subs r0, #0x11 strh r0, [r2, #0x32] b _080914E2 _080914C8: ldrh r0, [r4, #0x2e] adds r0, r1, r0 adds r0, #0x11 b _080914E0 _080914D0: ldrh r0, [r4, #0x32] adds r0, r1, r0 adds r0, #0x11 strh r0, [r2, #0x32] b _080914E2 _080914DA: ldrh r0, [r4, #0x2e] subs r0, r0, r1 subs r0, #0x11 _080914E0: strh r0, [r2, #0x2e] _080914E2: adds r0, r4, #0 adds r0, #0x70 ldrh r0, [r0] subs r0, #8 lsls r0, r0, #0xc lsrs r1, r0, #0x10 ldrb r0, [r2, #0x14] cmp r1, r0 beq _08091502 strb r1, [r2, #0x14] lsls r1, r1, #2 adds r1, r1, r3 adds r1, #8 adds r0, r2, #0 bl UpdateSprite _08091502: pop {r4, pc} thumb_func_start sub_08091504 sub_08091504: @ 0x08091504 push {r4, lr} adds r4, r0, #0 movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] ldrb r1, [r4, #0xb] adds r1, #4 adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 bl UpdateSpriteOrderAndFlip pop {r4, pc} thumb_func_start sub_0809153C sub_0809153C: @ 0x0809153C push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} sub sp, #4 adds r5, r0, #0 ldr r6, _080915A8 @ =gLinkEntity ldr r1, _080915AC @ =gUnk_081222C0 ldrb r0, [r5, #0xb] adds r0, r0, r1 ldrb r0, [r0] mov r8, r0 adds r0, r5, #0 adds r0, #0x76 adds r1, r5, #0 adds r1, #0x70 ldrh r0, [r0] ldrh r1, [r1] cmp r0, r1 bls _08091656 ldrh r4, [r6, #0x2e] ldrh r0, [r6, #0x32] mov sb, r0 movs r2, #0x24 ldrsh r1, [r5, r2] adds r0, r6, #0 mov r2, r8 str r3, [sp] bl sub_080044AE lsls r4, r4, #0x10 asrs r4, r4, #0x10 ldrh r2, [r6, #0x2e] movs r7, #0x2e ldrsh r0, [r6, r7] ldr r3, [sp] cmp r4, r0 bne _08091596 mov r1, sb lsls r0, r1, #0x10 asrs r0, r0, #0x10 movs r7, #0x32 ldrsh r1, [r6, r7] cmp r0, r1 beq _08091656 _08091596: ldrb r0, [r5, #0xb] cmp r0, #1 beq _080915CA cmp r0, #1 bgt _080915B0 cmp r0, #0 beq _080915BA b _080915E0 .align 2, 0 _080915A8: .4byte gLinkEntity _080915AC: .4byte gUnk_081222C0 _080915B0: cmp r0, #2 beq _080915CE cmp r0, #3 beq _080915DA b _080915E0 _080915BA: ldrh r1, [r6, #0x32] mov r2, sb lsls r0, r2, #0x10 asrs r0, r0, #0x10 subs r1, r1, r0 lsls r1, r1, #0x10 lsrs r3, r1, #0x10 b _080915E0 _080915CA: subs r0, r4, r2 b _080915DC _080915CE: ldrh r1, [r6, #0x32] mov r7, sb lsls r0, r7, #0x10 asrs r0, r0, #0x10 subs r0, r0, r1 b _080915DC _080915DA: subs r0, r2, r4 _080915DC: lsls r0, r0, #0x10 lsrs r3, r0, #0x10 _080915E0: lsls r2, r3, #0x18 ldr r3, _0809163C @ =gUnk_080C9160 mov r1, r8 lsls r0, r1, #4 adds r0, r0, r3 movs r7, #0 ldrsh r0, [r0, r7] asrs r2, r2, #0x10 adds r1, r0, #0 muls r1, r2, r1 ldr r0, [r5, #0x2c] adds r0, r0, r1 str r0, [r5, #0x2c] mov r1, r8 lsls r0, r1, #4 adds r0, #0x80 adds r0, r0, r3 movs r7, #0 ldrsh r0, [r0, r7] adds r1, r0, #0 muls r1, r2, r1 ldr r0, [r5, #0x30] subs r0, r0, r1 str r0, [r5, #0x30] adds r0, r5, #0 bl sub_08091660 adds r0, r5, #0 adds r0, #0x76 adds r1, r5, #0 adds r1, #0x70 ldrh r0, [r0] ldrh r1, [r1] cmp r0, r1 bhi _08091640 movs r0, #0x86 lsls r0, r0, #1 bl sub_08004488 adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 b _08091656 .align 2, 0 _0809163C: .4byte gUnk_080C9160 _08091640: ldrb r0, [r5, #0xf] subs r0, #1 strb r0, [r5, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _08091656 movs r0, #0x10 strb r0, [r5, #0xf] adds r0, #0xff bl sub_08004488 _08091656: add sp, #4 pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08091660 sub_08091660: @ 0x08091660 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #1 beq _08091686 cmp r0, #1 bgt _08091674 cmp r0, #0 beq _0809167E b _080916AA _08091674: cmp r0, #2 beq _08091690 cmp r0, #3 beq _0809169A b _080916AA _0809167E: adds r1, r4, #0 adds r1, #0x82 ldrh r0, [r4, #0x32] b _080916A0 _08091686: adds r0, r4, #0 adds r0, #0x80 ldrh r0, [r0] ldrh r1, [r4, #0x2e] b _080916A2 _08091690: adds r0, r4, #0 adds r0, #0x82 ldrh r0, [r0] ldrh r1, [r4, #0x32] b _080916A2 _0809169A: adds r1, r4, #0 adds r1, #0x80 ldrh r0, [r4, #0x2e] _080916A0: ldrh r1, [r1] _080916A2: subs r0, r0, r1 adds r1, r4, #0 adds r1, #0x70 strh r0, [r1] _080916AA: adds r5, r4, #0 adds r5, #0x86 ldrh r0, [r5] bl sub_0807CBE4 cmp r0, #0 beq _080916C8 adds r0, r4, #0 adds r0, #0x70 ldrh r0, [r0] cmp r0, #0 bne _080916C8 ldrh r0, [r5] bl sub_0807CD48 _080916C8: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080916CC sub_080916CC: @ 0x080916CC push {r4, lr} adds r4, r0, #0 ldr r1, _080916E8 @ =gUnk_081223A8 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r4, #0x41 movs r0, #0 strb r0, [r4] pop {r4, pc} .align 2, 0 _080916E8: .4byte gUnk_081223A8 thumb_func_start sub_080916EC sub_080916EC: @ 0x080916EC push {r4, r5, r6, r7, lr} adds r6, r0, #0 ldrb r0, [r6, #0xe] lsls r0, r0, #3 ldr r1, _080917C8 @ =gUnk_030010EC adds r7, r0, r1 adds r0, r6, #0 adds r0, #0x84 str r7, [r0] ldr r0, _080917CC @ =gRoomControls ldrb r0, [r0, #5] ldrb r1, [r7, #4] cmp r0, r1 bne _08091716 ldr r0, _080917D0 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 lsls r1, r1, #5 ands r0, r1 cmp r0, #0 beq _0809171A _08091716: bl sub_0805E780 _0809171A: ldr r4, _080917CC @ =gRoomControls ldrh r1, [r7] movs r5, #0x3f adds r0, r5, #0 ands r0, r1 lsls r0, r0, #4 ldrh r2, [r4, #6] adds r0, r0, r2 adds r0, #8 strh r0, [r6, #0x2e] ldrh r1, [r7] movs r0, #0xfc lsls r0, r0, #4 ands r0, r1 lsrs r0, r0, #2 ldrh r3, [r4, #8] adds r0, r0, r3 adds r0, #8 strh r0, [r6, #0x32] ldrb r0, [r7, #5] strb r0, [r6, #0x14] ldrb r0, [r7, #6] strb r0, [r6, #0xb] movs r2, #1 strb r2, [r6, #0xc] ldr r0, _080917D4 @ =gUnk_080FD310 str r0, [r6, #0x48] ldrb r1, [r6, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r6, #0x10] adds r0, r6, #0 adds r0, #0x3f strb r2, [r0] adds r1, r6, #0 adds r1, #0x3c movs r0, #0x47 strb r0, [r1] adds r1, #4 movs r0, #0x44 strb r0, [r1] subs r1, #5 movs r0, #0x80 strb r0, [r1] ldrb r0, [r6, #0x14] lsls r0, r0, #3 strb r0, [r6, #0x15] movs r0, #0xe0 lsls r0, r0, #3 strh r0, [r6, #0x24] adds r2, r6, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] ldrb r1, [r6, #0x14] adds r1, #4 ldrb r0, [r6, #0xb] adds r1, r1, r0 adds r0, r6, #0 bl LoadAnimation ldr r0, _080917D8 @ =0x00004022 movs r2, #0x2e ldrsh r1, [r6, r2] ldrh r2, [r4, #6] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r5 movs r3, #0x32 ldrsh r2, [r6, r3] ldrh r3, [r4, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r5 lsls r2, r2, #6 orrs r1, r2 adds r2, r6, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer pop {r4, r5, r6, r7, pc} .align 2, 0 _080917C8: .4byte gUnk_030010EC _080917CC: .4byte gRoomControls _080917D0: .4byte gLinkState _080917D4: .4byte gUnk_080FD310 _080917D8: .4byte 0x00004022 thumb_func_start sub_080917DC sub_080917DC: @ 0x080917DC push {r4, lr} adds r4, r0, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x1d bne _08091810 movs r0, #0xa8 lsls r0, r0, #0xa str r0, [r4, #0x20] movs r0, #7 strb r0, [r4, #0xc] ldrb r1, [r4, #0x14] adds r1, #4 ldrb r0, [r4, #0xb] adds r1, r1, r0 adds r0, r4, #0 bl LoadAnimation ldr r0, _0809180C @ =0x0000013B bl PlaySFX b _080918A0 .align 2, 0 _0809180C: .4byte 0x0000013B _08091810: adds r0, r4, #0 bl sub_0800445C cmp r0, #0 beq _0809184A ldr r2, _08091840 @ =gLinkState ldr r0, [r2, #0x30] ldr r1, _08091844 @ =0x00040080 ands r0, r1 cmp r0, #0 bne _08091848 ldrb r0, [r2, #0x1c] cmp r0, #0 bne _08091848 ldrb r0, [r2, #5] cmp r0, #0 bne _08091848 ldrb r0, [r2, #2] cmp r0, #0 bne _08091848 ldrb r0, [r4, #0xe] adds r0, #1 b _0809184A .align 2, 0 _08091840: .4byte gLinkState _08091844: .4byte 0x00040080 _08091848: movs r0, #0 _0809184A: strb r0, [r4, #0xe] ldrb r0, [r4, #0xb] cmp r0, #0 bne _0809189C ldrb r0, [r4, #0xe] cmp r0, #8 bls _080918A0 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] ldr r2, _08091894 @ =gLinkState movs r0, #0x81 strb r0, [r2, #2] ldr r0, [r2, #0x30] movs r1, #0x80 lsls r1, r1, #0x13 orrs r0, r1 str r0, [r2, #0x30] ldr r1, _08091898 @ =gLinkEntity movs r0, #0x80 lsls r0, r0, #0xa str r0, [r1, #0x20] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r1, #0x24] ldrb r2, [r1, #0x10] movs r0, #0x7f ands r0, r2 strb r0, [r1, #0x10] bl sub_08077B2C bl sub_0807A108 movs r0, #0x7c bl PlaySFX b _080918A0 .align 2, 0 _08091894: .4byte gLinkState _08091898: .4byte gLinkEntity _0809189C: movs r0, #0 strb r0, [r4, #0xe] _080918A0: pop {r4, pc} .align 2, 0 thumb_func_start sub_080918A4 sub_080918A4: @ 0x080918A4 push {r4, r5, lr} adds r4, r0, #0 ldr r5, _08091964 @ =gLinkEntity adds r1, r5, #0 movs r2, #2 movs r3, #2 bl sub_080041A0 cmp r0, #0 beq _08091974 ldrh r0, [r4, #0x2e] strh r0, [r5, #0x2e] ldrh r0, [r4, #0x32] strh r0, [r5, #0x32] movs r0, #0x36 ldrsh r1, [r5, r0] movs r0, #0x10 rsbs r0, r0, #0 cmp r1, r0 ble _0809197E ldr r0, [r5, #0x20] cmp r0, #0 bge _080919A4 ldrb r0, [r4, #0x14] lsls r0, r0, #1 strb r0, [r5, #0x14] ldr r2, _08091968 @ =gLinkState ldr r0, [r2, #0x30] movs r1, #0x80 lsls r1, r1, #0x13 eors r0, r1 movs r1, #0x80 lsls r1, r1, #5 orrs r0, r1 str r0, [r2, #0x30] ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #1 strb r0, [r4, #0xf] ldrb r0, [r4, #0x10] movs r2, #0x20 orrs r0, r2 strb r0, [r4, #0x10] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x97 strb r0, [r1] adds r0, r5, #0 adds r0, #0x3c ldrb r0, [r0] adds r0, #1 subs r1, #3 orrs r0, r2 strb r0, [r1] adds r0, r5, #0 adds r0, #0x3b ldrb r0, [r0] adds r2, r4, #0 adds r2, #0x3b strb r0, [r2] adds r1, #4 movs r0, #0x18 strb r0, [r1] adds r1, #4 movs r0, #8 strb r0, [r1] adds r0, r4, #0 bl sub_0801766C movs r1, #0x2e ldrsh r0, [r4, r1] ldr r2, _0809196C @ =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 ldr r0, _08091970 @ =0x00000137 bl PlaySFX b _0809197E .align 2, 0 _08091964: .4byte gLinkEntity _08091968: .4byte gLinkState _0809196C: .4byte gRoomControls _08091970: .4byte 0x00000137 _08091974: adds r0, r5, #0 adds r1, r4, #0 bl sub_080045C4 strb r0, [r5, #0x15] _0809197E: ldr r3, _080919A8 @ =gLinkEntity ldr r0, [r3, #0x20] cmp r0, #0 bge _080919A4 adds r0, r4, #0 adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d lsrs r1, r1, #0x1d subs r1, #1 adds r3, #0x29 movs r0, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] _080919A4: pop {r4, r5, pc} .align 2, 0 _080919A8: .4byte gLinkEntity thumb_func_start sub_080919AC sub_080919AC: @ 0x080919AC push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r0, #0 ldr r1, _080919D4 @ =gRoomControls movs r0, #0 mov r8, r0 movs r0, #7 strb r0, [r1, #0xe] ldr r0, _080919D8 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 lsls r1, r1, #5 ands r0, r1 cmp r0, #0 bne _080919DC movs r0, #1 strb r0, [r5, #0xc] b _08091C04 .align 2, 0 _080919D4: .4byte gRoomControls _080919D8: .4byte gLinkState _080919DC: ldr r4, _08091A14 @ =gLinkEntity adds r6, r4, #0 adds r6, #0x5a ldrb r1, [r6] movs r7, #0xf adds r0, r7, #0 ands r0, r1 cmp r0, #0 bne _08091A22 ldrb r1, [r5, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r5, #0x10] adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldrb r1, [r6] movs r0, #0xf0 ands r0, r1 cmp r0, #0x10 bne _08091A18 adds r1, r5, #0 adds r1, #0x63 movs r0, #1 strb r0, [r1] b _08091C04 .align 2, 0 _08091A14: .4byte gLinkEntity _08091A18: adds r0, r5, #0 adds r0, #0x63 mov r1, r8 strb r1, [r0] b _08091C04 _08091A22: ldrb r0, [r5, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r5, #0x10] mov r0, r8 strh r0, [r4, #0x24] adds r0, r5, #0 bl sub_0806F69C adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition adds r0, r5, #0 adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d lsrs r1, r1, #0x1d subs r1, #1 adds r3, r4, #0 adds r3, #0x29 movs r0, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] adds r0, r5, #0 bl sub_08091DDC cmp r0, #0 beq _08091A68 b _08091C04 _08091A68: ldr r0, _08091AD8 @ =gUnk_030010A0 ldr r0, [r0] ands r0, r7 cmp r0, #0 bne _08091A7A movs r0, #0x9c lsls r0, r0, #1 bl PlaySFX _08091A7A: ldrb r0, [r5, #0xf] subs r0, #1 strb r0, [r5, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _08091A92 movs r0, #0x7b bl PlaySFX movs r0, #0x3c strb r0, [r5, #0xf] _08091A92: ldr r2, _08091ADC @ =gUnk_081223C8 ldrb r0, [r5, #0x14] lsls r0, r0, #1 adds r1, r0, r2 ldrb r1, [r1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r0, #1 adds r0, r0, r2 movs r2, #0 ldrsb r2, [r0, r2] adds r0, r5, #0 bl sub_080002B4 adds r4, r0, #0 ldr r1, _08091AE0 @ =gUnk_081223D8 ldrb r0, [r5, #0x14] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl sub_08007DD6 cmp r0, #0 bne _08091AE4 ldrb r0, [r5, #0x15] movs r1, #0x10 eors r0, r1 strb r0, [r5, #0x15] ldrb r0, [r5, #0x14] movs r1, #2 eors r0, r1 strb r0, [r5, #0x14] b _08091BD8 .align 2, 0 _08091AD8: .4byte gUnk_030010A0 _08091ADC: .4byte gUnk_081223C8 _08091AE0: .4byte gUnk_081223D8 _08091AE4: adds r0, r4, #0 subs r0, #0x64 cmp r0, #0xb bhi _08091BD8 lsls r0, r0, #2 ldr r1, _08091AF8 @ =_08091AFC adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08091AF8: .4byte _08091AFC _08091AFC: @ jump table .4byte _08091B2C @ case 0 .4byte _08091BD8 @ case 1 .4byte _08091BD8 @ case 2 .4byte _08091BB8 @ case 3 .4byte _08091BB8 @ case 4 .4byte _08091BB8 @ case 5 .4byte _08091BB8 @ case 6 .4byte _08091BD8 @ case 7 .4byte _08091BB8 @ case 8 .4byte _08091BB8 @ case 9 .4byte _08091BB8 @ case 10 .4byte _08091BB8 @ case 11 _08091B2C: ldrb r1, [r5, #0x10] movs r0, #0xdf ands r0, r1 strb r0, [r5, #0x10] adds r1, r5, #0 adds r1, #0x3f movs r0, #1 strb r0, [r1] subs r1, #3 movs r0, #0x47 strb r0, [r1] adds r1, #4 movs r0, #0x44 strb r0, [r1] subs r1, #5 movs r4, #0x80 movs r0, #0x80 strb r0, [r1] movs r0, #6 strb r0, [r5, #0xc] adds r0, r5, #0 bl sub_08017744 ldr r2, _08091BAC @ =gLinkState movs r0, #0x41 strb r0, [r2, #2] ldr r0, [r2, #0x30] movs r1, #0x80 lsls r1, r1, #5 eors r0, r1 movs r1, #0x80 lsls r1, r1, #0x13 orrs r0, r1 str r0, [r2, #0x30] ldr r1, _08091BB0 @ =gLinkEntity movs r0, #0x80 lsls r0, r0, #0xa str r0, [r1, #0x20] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r1, #0x24] ldrb r0, [r5, #0x14] lsls r0, r0, #1 strb r0, [r1, #0x14] ldrb r0, [r5, #0x15] strb r0, [r1, #0x15] ldrb r0, [r1, #0x10] orrs r4, r0 strb r4, [r1, #0x10] adds r0, r5, #0 bl sub_08004168 ldrb r1, [r5, #0x14] adds r1, #0xc adds r0, r5, #0 bl LoadAnimation movs r0, #0x78 bl PlaySFX ldr r0, _08091BB4 @ =0x00000139 bl PlaySFX b _08091C04 .align 2, 0 _08091BAC: .4byte gLinkState _08091BB0: .4byte gLinkEntity _08091BB4: .4byte 0x00000139 _08091BB8: adds r0, r5, #0 bl sub_080002B8 cmp r4, r0 bne _08091BD8 adds r0, r5, #0 bl sub_08091C0C ldr r1, _08091BD4 @ =gLinkEntity ldrb r0, [r5, #0x14] lsls r0, r0, #1 strb r0, [r1, #0x14] b _08091C04 .align 2, 0 _08091BD4: .4byte gLinkEntity _08091BD8: ldr r2, _08091BF8 @ =gLinkEntity ldrb r0, [r5, #0x14] lsls r1, r0, #1 strb r1, [r2, #0x14] adds r1, r5, #0 adds r1, #0x58 ldrb r1, [r1] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r1, r0 bne _08091BFC adds r0, r5, #0 bl sub_080042B8 b _08091C04 .align 2, 0 _08091BF8: .4byte gLinkEntity _08091BFC: ldrb r1, [r5, #0x14] adds r0, r5, #0 bl LoadAnimation _08091C04: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08091C0C sub_08091C0C: @ 0x08091C0C push {r4, lr} adds r4, r0, #0 bl sub_08004168 ldr r1, _08091C30 @ =gLinkEntity adds r0, r4, #0 bl CopyPosition adds r0, r4, #0 bl sub_080002B8 cmp r0, #0x68 beq _08091C46 cmp r0, #0x68 bhi _08091C34 cmp r0, #0x67 beq _08091C3E b _08091C80 .align 2, 0 _08091C30: .4byte gLinkEntity _08091C34: cmp r0, #0x69 beq _08091C4E cmp r0, #0x6a beq _08091C66 b _08091C80 _08091C3E: ldrb r0, [r4, #0x15] cmp r0, #0x18 beq _08091C54 b _08091C76 _08091C46: ldrb r0, [r4, #0x15] cmp r0, #8 beq _08091C6C b _08091C5C _08091C4E: ldrb r0, [r4, #0x15] cmp r0, #8 bne _08091C5C _08091C54: movs r0, #0 strb r0, [r4, #0x15] strb r0, [r4, #0x14] b _08091C86 _08091C5C: movs r0, #0x18 strb r0, [r4, #0x15] movs r0, #3 strb r0, [r4, #0x14] b _08091C86 _08091C66: ldrb r0, [r4, #0x15] cmp r0, #0x18 bne _08091C76 _08091C6C: movs r0, #0x10 strb r0, [r4, #0x15] movs r0, #2 strb r0, [r4, #0x14] b _08091C86 _08091C76: movs r0, #8 strb r0, [r4, #0x15] movs r0, #1 strb r0, [r4, #0x14] b _08091C86 _08091C80: movs r0, #3 strb r0, [r4, #0xc] b _08091C92 _08091C86: movs r0, #3 strb r0, [r4, #0xc] ldr r1, _08091C94 @ =gLinkEntity ldrb r0, [r4, #0x14] lsls r0, r0, #1 strb r0, [r1, #0x14] _08091C92: pop {r4, pc} .align 2, 0 _08091C94: .4byte gLinkEntity thumb_func_start sub_08091C98 sub_08091C98: @ 0x08091C98 push {r4, r5, lr} adds r4, r0, #0 bl sub_0806F69C ldr r5, _08091CC0 @ =gLinkEntity adds r0, r4, #0 adds r1, r5, #0 bl CopyPosition ldr r1, _08091CC4 @ =gRoomControls ldrh r0, [r1] cmp r0, #0 bne _08091CBE movs r0, #3 strb r0, [r4, #0xc] movs r0, #0xe0 lsls r0, r0, #3 strh r0, [r4, #0x24] str r5, [r1, #0x30] _08091CBE: pop {r4, r5, pc} .align 2, 0 _08091CC0: .4byte gLinkEntity _08091CC4: .4byte gRoomControls thumb_func_start sub_08091CC8 sub_08091CC8: @ 0x08091CC8 push {r4, r5, r6, lr} adds r6, r0, #0 ldr r2, _08091D58 @ =gLinkState ldrb r0, [r2, #2] cmp r0, #0 bne _08091D64 movs r0, #1 strb r0, [r6, #0xc] ldrb r0, [r6, #0x15] movs r1, #0x10 eors r0, r1 strb r0, [r6, #0x15] ldrb r0, [r6, #0x14] movs r1, #2 eors r0, r1 strb r0, [r6, #0x14] ldr r0, [r2, #0x30] movs r1, #0x80 lsls r1, r1, #0x13 eors r0, r1 str r0, [r2, #0x30] adds r0, r6, #0 adds r0, #0x84 ldr r4, [r0] movs r0, #0x2e ldrsh r1, [r6, r0] ldr r5, _08091D5C @ =gRoomControls ldrh r0, [r5, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r2, #0x32 ldrsh r0, [r6, r2] ldrh r2, [r5, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 strh r1, [r4] ldrb r0, [r5, #5] strb r0, [r4, #4] ldrb r0, [r6, #0x14] strb r0, [r4, #5] ldrb r1, [r6, #0x14] adds r1, #0x10 adds r0, r6, #0 bl LoadAnimation ldr r0, _08091D60 @ =0x00004022 movs r3, #0x2e ldrsh r1, [r6, r3] ldrh r2, [r5, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r3, #0x32 ldrsh r2, [r6, r3] ldrh r3, [r5, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 adds r2, r6, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer b _08091D8A .align 2, 0 _08091D58: .4byte gLinkState _08091D5C: .4byte gRoomControls _08091D60: .4byte 0x00004022 _08091D64: adds r0, r6, #0 bl sub_080042B8 ldr r3, _08091D8C @ =gLinkEntity adds r0, r6, #0 adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d lsrs r1, r1, #0x1d subs r1, #1 adds r3, #0x29 movs r0, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] _08091D8A: pop {r4, r5, r6, pc} .align 2, 0 _08091D8C: .4byte gLinkEntity thumb_func_start sub_08091D90 sub_08091D90: @ 0x08091D90 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x20] cmp r0, #0 bge _08091DA0 adds r0, r4, #0 bl sub_080042B8 _08091DA0: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 bne _08091DD8 movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08091DD8 ldrb r1, [r4, #0xb] movs r0, #4 eors r1, r0 strb r1, [r4, #0xb] movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x84 ldr r0, [r0] strb r1, [r0, #6] movs r0, #0x9e lsls r0, r0, #1 bl PlaySFX _08091DD8: pop {r4, pc} .align 2, 0 thumb_func_start sub_08091DDC sub_08091DDC: @ 0x08091DDC push {r4, lr} adds r4, r0, #0 ldr r2, _08091E30 @ =gUnk_081223D0 ldrb r0, [r4, #0x14] lsls r0, r0, #1 adds r1, r0, r2 ldrb r1, [r1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r0, #1 adds r0, r0, r2 movs r2, #0 ldrsb r2, [r0, r2] adds r0, r4, #0 bl sub_080002CC cmp r0, #0xff bne _08091E5C ldr r0, _08091E34 @ =gLinkEntity ldrb r1, [r4, #0x14] bl sub_0807BD14 cmp r0, #0 beq _08091E5C ldrb r1, [r4, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r4, #0x11] movs r0, #5 strb r0, [r4, #0xc] ldrb r0, [r4, #0x15] cmp r0, #8 beq _08091E40 cmp r0, #8 bgt _08091E38 cmp r0, #0 beq _08091E40 b _08091E44 .align 2, 0 _08091E30: .4byte gUnk_081223D0 _08091E34: .4byte gLinkEntity _08091E38: cmp r0, #0x10 beq _08091E40 cmp r0, #0x18 bne _08091E44 _08091E40: movs r0, #0xa0 strh r0, [r4, #0x24] _08091E44: ldr r0, _08091E54 @ =gLinkEntity ldrb r1, [r4, #0x15] strb r1, [r0, #0x15] ldr r0, _08091E58 @ =gRoomControls str r4, [r0, #0x30] movs r0, #1 b _08091E5E .align 2, 0 _08091E54: .4byte gLinkEntity _08091E58: .4byte gRoomControls _08091E5C: movs r0, #0 _08091E5E: pop {r4, pc} thumb_func_start sub_08091E60 sub_08091E60: @ 0x08091E60 push {lr} ldr r2, _08091E74 @ =gUnk_08122598 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08091E74: .4byte gUnk_08122598 thumb_func_start sub_08091E78 sub_08091E78: @ 0x08091E78 push {r4, lr} adds r4, r0, #0 movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r0, [r4, #0xe] cmp r0, #0 bne _08091E96 movs r0, #0x2d strb r0, [r4, #0xe] _08091E96: ldrb r1, [r4, #0x1b] movs r0, #0x3f ands r0, r1 movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x1b] ldrb r1, [r4, #0xb] adds r0, r4, #0 bl UpdateSprite ldr r1, _08091EBC @ =gUnk_08122590 ldrb r0, [r4, #0xb] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] bl PlaySFX pop {r4, pc} .align 2, 0 _08091EBC: .4byte gUnk_08122590 thumb_func_start sub_08091EC0 sub_08091EC0: @ 0x08091EC0 push {r4, lr} adds r4, r0, #0 ldr r1, [r4, #0x50] cmp r1, #0 beq _08091ED6 ldrh r0, [r1, #0x2e] strh r0, [r4, #0x2e] ldrh r0, [r1, #0x32] strh r0, [r4, #0x32] ldrh r0, [r1, #0x36] strh r0, [r4, #0x36] _08091ED6: ldrb r0, [r4, #0xb] cmp r0, #2 beq _08091EEC ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08091EEC bl sub_0805E780 _08091EEC: adds r0, r4, #0 bl sub_08004274 pop {r4, pc} thumb_func_start sub_08091EF4 sub_08091EF4: @ 0x08091EF4 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xc] cmp r0, #1 bhi _08091F0E ldr r0, _08091F10 @ =gUnk_08122604 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 _08091F0E: pop {pc} .align 2, 0 _08091F10: .4byte gUnk_08122604 thumb_func_start sub_08091F14 sub_08091F14: @ 0x08091F14 push {r4, r5, lr} adds r4, r0, #0 movs r2, #0 movs r0, #1 strb r0, [r4, #0xc] adds r3, r4, #0 adds r3, #0x29 ldrb r0, [r3] movs r1, #7 orrs r0, r1 strb r0, [r3] adds r0, r4, #0 adds r0, #0x58 strb r2, [r0] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08091FEC @ =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] adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08091FEA movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #6 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #0xd1 lsls r0, r0, #1 ldrh r1, [r5] subs r1, #0x41 adds r4, #0x38 ldrb r2, [r4] bl sub_0807B314 ldr r0, _08091FF0 @ =0x000001A3 ldrh r1, [r5] subs r1, #0x40 ldrb r2, [r4] bl sub_0807B314 movs r0, #0xd2 lsls r0, r0, #1 ldrh r1, [r5] subs r1, #0x3f ldrb r2, [r4] bl sub_0807B314 ldr r0, _08091FF4 @ =0x000001A5 ldrh r1, [r5] subs r1, #1 ldrb r2, [r4] bl sub_0807B314 movs r0, #0xd3 lsls r0, r0, #1 ldrh r1, [r5] ldrb r2, [r4] bl sub_0807B314 ldr r0, _08091FF8 @ =0x000001A7 ldrh r1, [r5] adds r1, #1 ldrb r2, [r4] bl sub_0807B314 movs r0, #0xd4 lsls r0, r0, #1 ldrh r1, [r5] adds r1, #0x3f ldrb r2, [r4] bl sub_0807B314 ldr r0, _08091FFC @ =0x000001A9 ldrh r1, [r5] adds r1, #0x40 ldrb r2, [r4] bl sub_0807B314 movs r0, #0xd5 lsls r0, r0, #1 ldrh r1, [r5] adds r1, #0x41 ldrb r2, [r4] bl sub_0807B314 _08091FEA: pop {r4, r5, pc} .align 2, 0 _08091FEC: .4byte gRoomControls _08091FF0: .4byte 0x000001A3 _08091FF4: .4byte 0x000001A5 _08091FF8: .4byte 0x000001A7 _08091FFC: .4byte 0x000001A9 thumb_func_start sub_08092000 sub_08092000: @ 0x08092000 push {r4, lr} adds r4, r0, #0 adds r0, #0x70 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002B0 movs r1, #0xd3 lsls r1, r1, #1 cmp r0, r1 bne _08092034 movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #6 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 _08092034: pop {r4, pc} .align 2, 0 thumb_func_start sub_08092038 sub_08092038: @ 0x08092038 push {lr} ldr r2, _0809204C @ =gUnk_0812260C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809204C: .4byte gUnk_0812260C thumb_func_start sub_08092050 sub_08092050: @ 0x08092050 push {r4, r5, r6, r7, lr} adds r6, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0809207A movs r0, #3 strb r0, [r6, #0xc] ldrh r0, [r6, #0x2e] adds r0, #2 strh r0, [r6, #0x2e] adds r0, r6, #0 bl sub_0809223C adds r0, r6, #0 movs r1, #1 bl LoadAnimation b _08092148 _0809207A: ldrb r0, [r6, #0xd] cmp r0, #0 bne _08092138 movs r1, #1 strb r1, [r6, #0xd] adds r0, r6, #0 adds r0, #0x38 strb r1, [r0] adds r2, r6, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] ldrh r0, [r6, #0x2e] adds r0, #2 strh r0, [r6, #0x2e] adds r0, r6, #0 bl UpdateSpriteOrderAndFlip movs r0, #0x2e ldrsh r2, [r6, r0] ldr r3, _08092130 @ =gRoomControls ldrh r0, [r3, #6] subs r2, r2, r0 asrs r2, r2, #4 movs r4, #0x3f ands r2, r4 movs r1, #0x32 ldrsh r0, [r6, r1] ldrh r1, [r3, #8] adds r1, #8 subs r0, r0, r1 asrs r0, r0, #4 ands r0, r4 lsls r0, r0, #6 orrs r2, r0 adds r5, r6, #0 adds r5, #0x70 strh r2, [r5] movs r0, #0x2e ldrsh r2, [r6, r0] ldrh r0, [r3, #6] subs r2, r2, r0 asrs r2, r2, #4 ands r2, r4 movs r1, #0x32 ldrsh r0, [r6, r1] ldrh r1, [r3, #8] subs r1, #8 subs r0, r0, r1 asrs r0, r0, #4 ands r0, r4 lsls r0, r0, #6 orrs r2, r0 adds r7, r6, #0 adds r7, #0x72 strh r2, [r7] ldrh r0, [r5] movs r1, #1 bl sub_080001DA adds r1, r6, #0 adds r1, #0x74 strh r0, [r1] ldrh r0, [r7] movs r1, #1 bl sub_080001DA adds r1, r6, #0 adds r1, #0x76 strh r0, [r1] ldr r4, _08092134 @ =0x00004022 ldrh r1, [r5] adds r0, r4, #0 movs r2, #1 bl UpdateCollisionLayer ldrh r1, [r7] adds r0, r4, #0 movs r2, #1 bl UpdateCollisionLayer adds r0, r6, #0 movs r1, #0 bl LoadAnimation b _08092148 .align 2, 0 _08092130: .4byte gRoomControls _08092134: .4byte 0x00004022 _08092138: movs r0, #1 strb r0, [r6, #0xc] adds r0, r6, #0 bl sub_080921BC adds r0, r6, #0 bl sub_080921F0 _08092148: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0809214C sub_0809214C: @ 0x0809214C push {r4, lr} adds r4, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08092160 movs r0, #2 strb r0, [r4, #0xc] _08092160: pop {r4, pc} .align 2, 0 thumb_func_start sub_08092164 sub_08092164: @ 0x08092164 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080921B6 movs r0, #3 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x70 ldrh r1, [r1] movs r2, #1 bl UpdateCollisionLayer adds r0, r4, #0 adds r0, #0x76 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x72 ldrh r1, [r1] movs r2, #1 bl UpdateCollisionLayer adds r0, r4, #0 bl sub_08092214 adds r0, r4, #0 bl sub_0809223C adds r0, r4, #0 movs r1, #1 bl LoadAnimation _080921B6: pop {r4, pc} thumb_func_start nullsub_118 nullsub_118: @ 0x080921B8 bx lr .align 2, 0 thumb_func_start sub_080921BC sub_080921BC: @ 0x080921BC push {lr} adds r2, r0, #0 ldr r1, _080921DC @ =gUnk_030011E8 ldr r0, _080921E0 @ =0x000029F8 adds r3, r1, r0 _080921C6: ldrb r0, [r1, #8] cmp r0, #6 bne _080921E4 ldrb r0, [r1, #9] cmp r0, #0x6f bne _080921E4 ldrb r0, [r1, #0xa] cmp r0, #2 bne _080921E4 str r1, [r2, #0x54] b _080921EE .align 2, 0 _080921DC: .4byte gUnk_030011E8 _080921E0: .4byte 0x000029F8 _080921E4: adds r1, #0x88 cmp r1, r3 blo _080921C6 movs r0, #0 str r0, [r2, #0x54] _080921EE: pop {pc} thumb_func_start sub_080921F0 sub_080921F0: @ 0x080921F0 push {lr} ldr r2, [r0, #0x54] cmp r2, #0 beq _08092212 adds r1, r2, #0 adds r1, #0x38 movs r0, #1 strb r0, [r1] adds r3, r2, #0 adds r3, #0x29 ldrb r0, [r3] movs r1, #7 orrs r0, r1 strb r0, [r3] adds r0, r2, #0 bl UpdateSpriteOrderAndFlip _08092212: pop {pc} thumb_func_start sub_08092214 sub_08092214: @ 0x08092214 push {lr} ldr r2, [r0, #0x54] cmp r2, #0 beq _0809223A adds r1, r2, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r3, r2, #0 adds r3, #0x29 ldrb r1, [r3] subs r0, #0xa ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r3] adds r0, r2, #0 bl UpdateSpriteOrderAndFlip _0809223A: pop {pc} thumb_func_start sub_0809223C sub_0809223C: @ 0x0809223C push {lr} adds r2, r0, #0 adds r2, #0x38 movs r1, #2 strb r1, [r2] adds r3, r0, #0 adds r3, #0x29 ldrb r2, [r3] subs r1, #0xa ands r1, r2 movs r2, #3 orrs r1, r2 strb r1, [r3] bl UpdateSpriteOrderAndFlip pop {pc} thumb_func_start sub_0809225C sub_0809225C: @ 0x0809225C push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xa] cmp r0, #0 bne _0809226E adds r0, r1, #0 bl sub_08092278 b _08092274 _0809226E: adds r0, r1, #0 bl sub_08092344 _08092274: pop {pc} .align 2, 0 thumb_func_start sub_08092278 sub_08092278: @ 0x08092278 push {lr} ldr r2, _0809228C @ =gUnk_08122644 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809228C: .4byte gUnk_08122644 thumb_func_start sub_08092290 sub_08092290: @ 0x08092290 push {lr} movs r1, #1 strb r1, [r0, #0xc] bl sub_080925A4 pop {pc} thumb_func_start sub_0809229C sub_0809229C: @ 0x0809229C push {r4, lr} adds r4, r0, #0 adds r0, #0x70 ldrb r0, [r0] cmp r0, #0 beq _080922E0 movs r0, #2 strb r0, [r4, #0xc] movs r0, #0xb0 lsls r0, r0, #0xa str r0, [r4, #0x20] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip ldr r0, [r4, #0x54] ldrb r1, [r0, #0x14] adds r0, r4, #0 bl LoadAnimation movs r0, #0xbf lsls r0, r0, #1 bl sub_08004488 ldr r0, [r4, #0x54] movs r1, #3 bl UpdateSprite _080922E0: pop {r4, pc} .align 2, 0 thumb_func_start sub_080922E4 sub_080922E4: @ 0x080922E4 push {r4, lr} adds r4, r0, #0 movs r1, #0x90 lsls r1, r1, #6 bl sub_08003FC4 adds r2, r0, #0 cmp r2, #0 bne _08092322 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x70 strb r2, [r0] ldr r0, [r4, #0x54] adds r0, #0x63 strb r2, [r0] ldr r0, [r4, #0x54] ldrb r1, [r0, #0x14] bl UpdateSprite adds r0, r4, #0 movs r1, #0x36 movs r2, #0 bl CreateFx b _0809233E _08092322: ldr r1, [r4, #0x20] ldr r0, _08092340 @ =0x00017FFF cmp r1, r0 bgt _0809233E adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _0809233E adds r0, r4, #0 bl sub_080042B8 _0809233E: pop {r4, pc} .align 2, 0 _08092340: .4byte 0x00017FFF thumb_func_start sub_08092344 sub_08092344: @ 0x08092344 push {r4, lr} adds r4, r0, #0 movs r0, #0 strb r0, [r4, #0xf] ldr r1, _08092364 @ =gUnk_08122650 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl sub_080926E4 pop {r4, pc} .align 2, 0 _08092364: .4byte gUnk_08122650 thumb_func_start sub_08092368 sub_08092368: @ 0x08092368 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xb] strb r0, [r2, #0x14] adds r3, r2, #0 adds r3, #0x29 ldrb r0, [r3] movs r1, #7 orrs r0, r1 strb r0, [r3] adds r1, r2, #0 adds r1, #0x40 movs r0, #0x48 strb r0, [r1] subs r1, #4 movs r0, #7 strb r0, [r1] subs r1, #1 movs r0, #0x81 strb r0, [r1] ldr r0, _0809239C @ =gUnk_080FD280 str r0, [r2, #0x48] adds r0, r2, #0 bl sub_0809264C pop {pc} .align 2, 0 _0809239C: .4byte gUnk_080FD280 thumb_func_start sub_080923A0 sub_080923A0: @ 0x080923A0 push {r4, lr} adds r4, r0, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #3 beq _080923E2 ldrb r0, [r4, #0xd] cmp r0, #0 bne _080923C6 movs r1, #1 movs r0, #1 strb r0, [r4, #0xd] ldrb r0, [r4, #0x14] eors r0, r1 strb r0, [r4, #0x14] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite _080923C6: adds r1, r4, #0 adds r1, #0x63 ldrb r0, [r1] subs r0, #1 strb r0, [r1] lsls r0, r0, #0x18 asrs r0, r0, #0x18 movs r1, #3 rsbs r1, r1, #0 cmp r0, r1 bne _080923E2 adds r0, r4, #0 bl sub_0809264C _080923E2: pop {r4, pc} thumb_func_start sub_080923E4 sub_080923E4: @ 0x080923E4 push {r4, lr} adds r4, r0, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x9d bne _080923F8 adds r0, r4, #0 bl sub_08092620 b _0809241A _080923F8: adds r0, r4, #0 bl sub_0809269C cmp r0, #0 beq _0809241A movs r0, #3 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] movs r0, #0x14 strb r0, [r4, #0xe] ldr r0, _0809241C @ =gLinkState adds r0, #0x3f movs r1, #0xfd strb r1, [r0] _0809241A: pop {r4, pc} .align 2, 0 _0809241C: .4byte gLinkState thumb_func_start sub_08092420 sub_08092420: @ 0x08092420 push {r4, lr} adds r4, r0, #0 bl sub_0809269C cmp r0, #0 beq _08092434 ldr r0, _08092464 @ =gLinkState adds r0, #0x3f movs r1, #0xfd strb r1, [r0] _08092434: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08092462 movs r0, #4 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x72 ldrh r1, [r0] subs r0, #2 movs r2, #0 strh r1, [r0] subs r0, #0xd strb r2, [r0] adds r0, r4, #0 movs r1, #2 bl UpdateSprite ldr r0, _08092468 @ =0x0000017B bl sub_08004488 _08092462: pop {r4, pc} .align 2, 0 _08092464: .4byte gLinkState _08092468: .4byte 0x0000017B thumb_func_start sub_0809246C sub_0809246C: @ 0x0809246C push {r4, r5, lr} adds r4, r0, #0 bl sub_0809269C adds r5, r4, #0 adds r5, #0x70 ldrh r0, [r5] cmp r0, #0 beq _08092482 subs r0, #1 strh r0, [r5] _08092482: ldrh r0, [r5] cmp r0, #0x8c bhi _080924DC adds r0, r4, #0 bl sub_08004274 adds r3, r4, #0 adds r3, #0x5a ldrb r1, [r3] movs r0, #0x80 ands r0, r1 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0 beq _080924B8 movs r0, #5 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x74 ldrh r0, [r0] strh r0, [r5] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] b _080924DC _080924B8: movs r2, #1 ands r2, r1 cmp r2, #0 beq _080924CC strb r0, [r3] movs r0, #0xbe lsls r0, r0, #1 bl sub_08004488 b _080924DC _080924CC: movs r0, #2 ands r0, r1 cmp r0, #0 beq _080924DC strb r2, [r3] ldr r0, _080924E0 @ =0x0000017D bl sub_08004488 _080924DC: pop {r4, r5, pc} .align 2, 0 _080924E0: .4byte 0x0000017D thumb_func_start sub_080924E4 sub_080924E4: @ 0x080924E4 push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x70 ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _0809252C movs r0, #6 strb r0, [r4, #0xc] ldrb r0, [r4, #0xb] strb r0, [r4, #0x14] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r1, r4, #0 adds r1, #0x63 movs r0, #0 strb r0, [r1] ldrb r1, [r4, #0x14] adds r1, #4 adds r0, r4, #0 bl UpdateSprite ldrb r0, [r4, #0x14] cmp r0, #0 bne _0809252C adds r0, r4, #0 bl sub_0809269C _0809252C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08092530 sub_08092530: @ 0x08092530 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0x14] cmp r0, #0 bne _08092544 adds r0, r4, #0 bl sub_0809269C adds r5, r0, #0 b _08092546 _08092544: movs r5, #0 _08092546: adds r0, r4, #0 bl sub_08004274 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08092570 movs r0, #0 strb r0, [r2] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r1, r4, #0 adds r1, #0x3f movs r0, #0xac strb r0, [r1] b _0809258A _08092570: movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0809258A adds r0, r4, #0 bl sub_0809264C cmp r5, #0 beq _0809258A ldr r0, _0809258C @ =gLinkState adds r0, #0x3f movs r1, #0xfd strb r1, [r0] _0809258A: pop {r4, r5, pc} .align 2, 0 _0809258C: .4byte gLinkState thumb_func_start sub_08092590 sub_08092590: @ 0x08092590 push {lr} adds r1, r0, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x9d bne _080925A2 adds r0, r1, #0 bl sub_08092620 _080925A2: pop {pc} thumb_func_start sub_080925A4 sub_080925A4: @ 0x080925A4 push {r4, r5, r6, r7, lr} adds r6, r0, #0 ldrb r0, [r6, #0xb] bl sub_0804B128 adds r5, r0, #0 ldrb r0, [r5, #9] cmp r0, #0xff beq _0809261A ldr r7, _0809261C @ =gRoomControls _080925B8: ldrb r2, [r5, #9] movs r0, #0x59 movs r1, #1 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08092612 movs r0, #0xff strb r0, [r4, #0x15] movs r0, #0 strh r0, [r4, #0x24] str r6, [r4, #0x50] ldrh r0, [r7, #6] ldrh r1, [r5, #4] adds r0, r0, r1 strh r0, [r4, #0x2e] ldrh r0, [r7, #8] ldrh r1, [r5, #6] adds r0, r0, r1 strh r0, [r4, #0x32] ldrb r1, [r5, #8] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] ldrh r0, [r5, #0xa] adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] ldrh r1, [r5, #0xc] adds r0, r4, #0 adds r0, #0x74 strh r1, [r0] ldr r0, [r5] str r0, [r4, #0x78] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r1, r4, #0 adds r1, #0x78 adds r2, r4, #0 adds r2, #0x76 adds r0, r4, #0 bl sub_080A2CC0 _08092612: adds r5, #0x10 ldrb r0, [r5, #9] cmp r0, #0xff bne _080925B8 _0809261A: pop {r4, r5, r6, r7, pc} .align 2, 0 _0809261C: .4byte gRoomControls thumb_func_start sub_08092620 sub_08092620: @ 0x08092620 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r1, [r5, #0x50] adds r0, r1, #0 adds r0, #0x70 ldrb r6, [r0] cmp r6, #0 bne _08092648 movs r4, #1 strb r4, [r0] str r5, [r1, #0x54] adds r0, r5, #0 bl CopyPosition strb r4, [r5, #0xc] strb r6, [r5, #0xd] adds r1, r5, #0 adds r1, #0x3f movs r0, #0xac strb r0, [r1] _08092648: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0809264C sub_0809264C: @ 0x0809264C push {lr} adds r2, r0, #0 ldrb r1, [r2, #0x14] movs r3, #1 adds r0, r3, #0 ands r0, r1 cmp r0, #0 beq _0809266A movs r0, #7 strb r0, [r2, #0xc] adds r1, r2, #0 adds r1, #0x3f movs r0, #0xac strb r0, [r1] b _08092674 _0809266A: movs r0, #2 strb r0, [r2, #0xc] adds r0, r2, #0 adds r0, #0x3f strb r3, [r0] _08092674: ldrb r1, [r2, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r2, #0x10] ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r2, #0x18] adds r1, r2, #0 adds r1, #0x63 movs r0, #0xfd strb r0, [r1] ldrb r1, [r2, #0x14] adds r0, r2, #0 bl UpdateSprite pop {pc} thumb_func_start sub_0809269C sub_0809269C: @ 0x0809269C push {r4, r5, r6, lr} adds r4, r0, #0 ldr r6, _080926D8 @ =gLinkState ldr r0, [r6, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _080926E0 ldr r5, _080926DC @ =gLinkEntity adds r0, r4, #0 adds r1, r5, #0 movs r2, #0x10 movs r3, #0x10 bl sub_080041A0 cmp r0, #0 beq _080926E0 bl sub_08079F8C cmp r0, #0 beq _080926E0 movs r1, #1 strb r1, [r6, #0x14] movs r2, #0x36 ldrsh r0, [r5, r2] cmp r0, #0 bne _080926E0 strb r1, [r4, #0xf] movs r0, #1 b _080926E2 .align 2, 0 _080926D8: .4byte gLinkState _080926DC: .4byte gLinkEntity _080926E0: movs r0, #0 _080926E2: pop {r4, r5, r6, pc} thumb_func_start sub_080926E4 sub_080926E4: @ 0x080926E4 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0xf] bl sub_080A2BE4 ldrb r0, [r4, #0xc] cmp r0, #1 bne _08092700 ldr r1, [r4, #0x50] ldrh r0, [r4, #0x2e] strh r0, [r1, #0x2e] ldr r1, [r4, #0x50] ldrh r0, [r4, #0x32] strh r0, [r1, #0x32] _08092700: adds r2, r4, #0 adds r2, #0x76 ldrh r0, [r2] subs r0, #1 strh r0, [r2] lsls r0, r0, #0x10 cmp r0, #0 bne _0809271A adds r1, r4, #0 adds r1, #0x78 adds r0, r4, #0 bl sub_080A2CC0 _0809271A: pop {r4, pc} thumb_func_start sub_0809271C sub_0809271C: @ 0x0809271C push {lr} ldr r2, _08092730 @ =gUnk_08122780 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08092730: .4byte gUnk_08122780 thumb_func_start sub_08092734 sub_08092734: @ 0x08092734 push {lr} ldr r2, _08092748 @ =gUnk_08122788 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08092748: .4byte gUnk_08122788 thumb_func_start sub_0809274C sub_0809274C: @ 0x0809274C push {r4, r5, r6, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x19] movs r5, #0x3f adds r0, r5, #0 ands r0, r1 movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x19] ldrh r0, [r4, #0x36] subs r0, #8 strh r0, [r4, #0x36] ldrb r0, [r4, #0xb] cmp r0, #1 beq _0809277C cmp r0, #2 bne _080927A2 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] _0809277C: ldr r0, _080927A4 @ =0x00004051 movs r2, #0x2e ldrsh r1, [r4, r2] ldr r3, _080927A8 @ =gRoomControls ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r5 movs r6, #0x32 ldrsh r2, [r4, r6] ldrh r3, [r3, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r5 lsls r2, r2, #6 orrs r1, r2 movs r2, #1 bl UpdateCollisionLayer _080927A2: pop {r4, r5, r6, pc} .align 2, 0 _080927A4: .4byte 0x00004051 _080927A8: .4byte gRoomControls thumb_func_start sub_080927AC sub_080927AC: @ 0x080927AC push {lr} adds r1, r0, #0 movs r0, #1 strb r0, [r1, #0xc] ldrb r0, [r1, #0xb] strb r0, [r1, #0x1e] ldrb r0, [r1, #0xb] cmp r0, #0 beq _080927C4 cmp r0, #2 beq _080927CA b _080927D0 _080927C4: adds r1, #0x63 movs r0, #2 b _080927CE _080927CA: adds r1, #0x63 movs r0, #0xfe _080927CE: strb r0, [r1] _080927D0: pop {pc} .align 2, 0 thumb_func_start sub_080927D4 sub_080927D4: @ 0x080927D4 push {r4, r5, r6, lr} mov r6, r8 push {r6} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x63 movs r0, #0xff strb r0, [r1] ldr r0, _08092848 @ =0x00004051 mov r8, r0 movs r2, #0x2e ldrsh r1, [r4, r2] ldr r6, _0809284C @ =gRoomControls ldrh r0, [r6, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r5, #0x3f ands r1, r5 movs r2, #0x32 ldrsh r0, [r4, r2] ldrh r2, [r6, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r5 lsls r0, r0, #6 orrs r1, r0 subs r1, #1 mov r0, r8 movs r2, #1 bl UpdateCollisionLayer movs r0, #0x2e ldrsh r1, [r4, r0] ldrh r0, [r6, #6] subs r1, r1, r0 asrs r1, r1, #4 ands r1, r5 movs r2, #0x32 ldrsh r0, [r4, r2] ldrh r2, [r6, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r5 lsls r0, r0, #6 orrs r1, r0 mov r0, r8 movs r2, #1 bl UpdateCollisionLayer pop {r3} mov r8, r3 pop {r4, r5, r6, pc} .align 2, 0 _08092848: .4byte 0x00004051 _0809284C: .4byte gRoomControls thumb_func_start sub_08092850 sub_08092850: @ 0x08092850 push {r4, lr} adds r2, r0, #0 ldrb r0, [r2, #0xa] cmp r0, #0 bne _08092888 ldr r3, _08092878 @ =gLinkEntity movs r0, #0x32 ldrsh r1, [r3, r0] movs r4, #0x32 ldrsh r0, [r2, r4] cmp r1, r0 blt _0809286E adds r0, #0x18 cmp r1, r0 ble _0809287C _0809286E: ldrb r0, [r2, #0x19] movs r1, #0x3f ands r1, r0 movs r0, #0x40 b _08092884 .align 2, 0 _08092878: .4byte gLinkEntity _0809287C: ldrb r0, [r2, #0x19] movs r1, #0x3f ands r1, r0 movs r0, #0x80 _08092884: orrs r1, r0 strb r1, [r2, #0x19] _08092888: pop {r4, pc} .align 2, 0 thumb_func_start sub_0809288C sub_0809288C: @ 0x0809288C push {lr} adds r2, r0, #0 ldrb r1, [r2, #0x10] movs r0, #2 ands r0, r1 cmp r0, #0 beq _080928B0 ldr r0, _080928AC @ =gUnk_0812279C ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 b _080928C0 .align 2, 0 _080928AC: .4byte gUnk_0812279C _080928B0: ldr r0, _080928C4 @ =gUnk_08122794 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 _080928C0: pop {pc} .align 2, 0 _080928C4: .4byte gUnk_08122794 thumb_func_start sub_080928C8 sub_080928C8: @ 0x080928C8 push {lr} adds r3, r0, #0 movs r2, #1 movs r0, #1 strb r0, [r3, #0xc] ldrb r1, [r3, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r3, #0x18] ldrb r0, [r3, #0xa] strb r0, [r3, #0x1e] ldrb r0, [r3, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r3, #0x19] adds r2, r3, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] ldrb r1, [r3, #0x1b] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r3, #0x1b] ldrb r0, [r3, #0xa] cmp r0, #2 beq _08092912 cmp r0, #4 beq _08092920 b _08092928 _08092912: adds r0, r3, #0 movs r1, #0x5b movs r2, #4 movs r3, #0 bl CreateObjectWithParent b _08092928 _08092920: ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] _08092928: pop {pc} .align 2, 0 thumb_func_start nullsub_119 nullsub_119: @ 0x0809292C bx lr .align 2, 0 thumb_func_start sub_08092930 sub_08092930: @ 0x08092930 push {r4, lr} adds r4, r0, #0 bl sub_080928C8 adds r4, #0x82 movs r0, #0 strh r0, [r4] pop {r4, pc} thumb_func_start sub_08092940 sub_08092940: @ 0x08092940 push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x84 ldr r1, [r5] bl sub_0807DF74 ldr r1, [r5] adds r0, r4, #0 bl sub_08092958 pop {r4, r5, pc} thumb_func_start sub_08092958 sub_08092958: @ 0x08092958 push {r4, lr} adds r3, r0, #0 adds r2, r1, #0 ldr r0, [r2, #8] cmp r0, #0 beq _0809298A movs r4, #0 _08092966: ldr r1, [r2, #8] mvns r0, r1 adds r0, #1 ands r0, r1 eors r1, r0 str r1, [r2, #8] cmp r0, #1 beq _0809297C cmp r0, #2 beq _08092980 b _08092984 _0809297C: strb r4, [r3, #0x1e] b _08092984 _08092980: ldr r0, [r2, #4] strb r0, [r3, #0x1e] _08092984: ldr r0, [r2, #8] cmp r0, #0 bne _08092966 _0809298A: pop {r4, pc} thumb_func_start sub_0809298C sub_0809298C: @ 0x0809298C push {lr} ldr r2, _080929A0 @ =gUnk_081227A4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080929A0: .4byte gUnk_081227A4 thumb_func_start sub_080929A4 sub_080929A4: @ 0x080929A4 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r1, [r5, #0xb] movs r6, #0xc0 adds r0, r6, #0 ands r0, r1 cmp r0, #0 beq _08092A08 adds r4, r5, #0 adds r4, #0x86 ldrh r0, [r4] bl sub_0807CBE4 cmp r0, #0 beq _08092A08 ldrb r0, [r5, #0xb] adds r1, r6, #0 ands r1, r0 cmp r1, #0x40 beq _080929D2 cmp r1, #0x80 beq _08092A04 b _08092A08 _080929D2: ldr r0, _080929F4 @ =gUnk_030010A0 ldrh r1, [r0, #0xa] movs r0, #0xc1 lsls r0, r0, #1 cmp r1, r0 beq _080929EE cmp r1, r0 blt _080929FC ldr r0, _080929F8 @ =0x0000044F cmp r1, r0 bgt _080929FC subs r0, #2 cmp r1, r0 blt _080929FC _080929EE: bl sub_0805E780 b _08092A08 .align 2, 0 _080929F4: .4byte gUnk_030010A0 _080929F8: .4byte 0x0000044F _080929FC: ldrh r0, [r4] bl sub_0807CD48 b _08092A08 _08092A04: bl sub_0805E780 _08092A08: movs r0, #1 strb r0, [r5, #0xc] movs r0, #0xc0 lsls r0, r0, #9 str r0, [r5, #0x20] bl Random movs r1, #7 ands r0, r1 lsls r0, r0, #0xa movs r2, #0x80 lsls r2, r2, #6 adds r1, r2, #0 adds r2, r5, #0 adds r2, #0x78 movs r3, #0 orrs r0, r1 strh r0, [r2] ldrb r0, [r5, #0xe] lsrs r0, r0, #1 strb r0, [r5, #0xf] strb r3, [r5, #0xe] ldrb r1, [r5, #0xb] movs r0, #0x3f ands r0, r1 strb r0, [r5, #0x1e] movs r4, #0x2e ldrsh r1, [r5, r4] ldr r2, _08092A8C @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r4, #0x32 ldrsh r0, [r5, r4] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r4, r5, #0 adds r4, #0x7e strh r1, [r4] ldrh r0, [r4] movs r1, #1 bl sub_080001DA adds r1, r5, #0 adds r1, #0x7c strh r0, [r1] ldrh r0, [r4] movs r1, #1 bl sub_080002E0 adds r1, r5, #0 adds r1, #0x7a strh r0, [r1] ldr r0, _08092A90 @ =0x00004022 ldrh r1, [r4] movs r2, #1 bl UpdateCollisionLayer pop {r4, r5, r6, pc} .align 2, 0 _08092A8C: .4byte gRoomControls _08092A90: .4byte 0x00004022 thumb_func_start sub_08092A94 sub_08092A94: @ 0x08092A94 push {r4, r5, lr} adds r4, r0, #0 ldr r2, _08092B08 @ =gLinkEntity ldrb r0, [r2, #0xc] cmp r0, #6 bne _08092B04 ldrb r0, [r2, #0x14] cmp r0, #0 bne _08092B04 movs r1, #0x32 ldrsh r0, [r4, r1] adds r0, #0x28 movs r3, #0x32 ldrsh r1, [r2, r3] cmp r0, r1 blt _08092B04 movs r0, #0x2e ldrsh r1, [r4, r0] movs r3, #0x2e ldrsh r0, [r2, r3] subs r1, r1, r0 ldrb r0, [r4, #0xf] cmp r1, r0 bge _08092B04 cmn r1, r0 ble _08092B04 adds r0, r4, #0 adds r0, #0x7c ldrh r0, [r0] adds r5, r4, #0 adds r5, #0x7e ldrh r1, [r5] movs r2, #1 bl UpdateCollisionLayer adds r0, r4, #0 adds r0, #0x7a ldrh r0, [r0] ldrh r1, [r5] movs r2, #1 bl sub_08000148 movs r0, #2 strb r0, [r4, #0xc] ldrh r0, [r4, #0x36] subs r0, #0x20 strh r0, [r4, #0x36] ldrh r0, [r4, #0x32] adds r0, #0x20 strh r0, [r4, #0x32] ldrb r1, [r4, #0x19] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x19] _08092B04: pop {r4, r5, pc} .align 2, 0 _08092B08: .4byte gLinkEntity thumb_func_start sub_08092B0C sub_08092B0C: @ 0x08092B0C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] cmp r0, #1 bne _08092B50 movs r0, #0 movs r1, #3 strb r1, [r4, #0xc] strb r0, [r4, #0xe] ldrb r0, [r4, #0xb] movs r1, #0xc0 ands r1, r0 cmp r1, #0x40 beq _08092B32 cmp r1, #0x80 bne _08092B3C movs r0, #0x72 bl sub_08004488 _08092B32: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 _08092B3C: adds r0, r4, #0 movs r1, #5 movs r2, #0 bl CreateFx adds r0, r4, #0 movs r1, #3 bl sub_0805457C b _08092B6A _08092B50: adds r0, r4, #0 adds r0, #0x78 ldrh r1, [r0] adds r0, r4, #0 bl sub_080044EC movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _08092B6A ldrb r0, [r4, #0xe] adds r0, #1 strb r0, [r4, #0xe] _08092B6A: pop {r4, pc} thumb_func_start sub_08092B6C sub_08092B6C: @ 0x08092B6C push {lr} bl sub_0805E780 pop {pc} thumb_func_start sub_08092B74 sub_08092B74: @ 0x08092B74 push {lr} ldr r2, _08092B88 @ =gUnk_081227C0 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08092B88: .4byte gUnk_081227C0 thumb_func_start sub_08092B8C sub_08092B8C: @ 0x08092B8C push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x86 ldrh r0, [r1] cmp r0, #0 beq _08092BA6 bl sub_0807CBE4 cmp r0, #0 beq _08092BA6 bl sub_0805E780 _08092BA6: movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r0, [r4, #0xe] adds r1, r4, #0 adds r1, #0x7d strb r0, [r1] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldr r0, _08092BE8 @ =gUnk_081227EC str r0, [r4, #0x48] movs r0, #8 strb r0, [r4, #0xe] ldrb r0, [r4, #0xa] lsls r0, r0, #1 ldr r1, _08092BEC @ =gUnk_081227B4 adds r2, r0, r1 ldrb r1, [r2] adds r0, r1, #0 cmp r0, #0xff bne _08092BF0 ldrb r0, [r4, #0xb] strb r0, [r4, #0x1e] b _08092BF6 .align 2, 0 _08092BE8: .4byte gUnk_081227EC _08092BEC: .4byte gUnk_081227B4 _08092BF0: strb r1, [r4, #0x1e] ldrb r0, [r2, #1] strb r0, [r4, #0xb] _08092BF6: pop {r4, pc} thumb_func_start sub_08092BF8 sub_08092BF8: @ 0x08092BF8 push {r4, r5, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x86 ldrh r0, [r1] cmp r0, #0 beq _08092C20 bl sub_0807CBE4 cmp r0, #0 beq _08092C20 movs r0, #2 strb r0, [r4, #0xc] ldr r0, _08092C1C @ =0x00000111 bl PlaySFX b _08092C92 .align 2, 0 _08092C1C: .4byte 0x00000111 _08092C20: adds r0, r4, #0 bl sub_0800445C cmp r0, #0 beq _08092C74 adds r0, r4, #0 adds r0, #0x7d ldrb r0, [r0] cmp r0, #0 bne _08092C74 ldrb r0, [r4, #0xb] lsls r0, r0, #3 ldr r1, _08092C68 @ =gUnk_081227CC adds r5, r0, r1 ldrh r1, [r5, #4] ldrh r2, [r5, #6] adds r0, r4, #0 bl sub_0806ED9C cmp r0, #0 blt _08092C78 ldr r1, _08092C6C @ =gLinkEntity ldrh r0, [r5] ldrb r1, [r1, #0x14] cmp r0, r1 bne _08092C78 ldr r0, _08092C70 @ =gLinkState adds r0, #0x90 ldrh r1, [r0] ldrh r0, [r5, #2] ands r0, r1 cmp r0, #0 beq _08092C78 ldrb r0, [r4, #0xe] subs r0, #1 b _08092C76 .align 2, 0 _08092C68: .4byte gUnk_081227CC _08092C6C: .4byte gLinkEntity _08092C70: .4byte gLinkState _08092C74: movs r0, #8 _08092C76: strb r0, [r4, #0xe] _08092C78: ldrb r0, [r4, #0xe] cmp r0, #0 bne _08092C92 movs r0, #2 strb r0, [r4, #0xc] movs r0, #8 movs r1, #0 movs r2, #0 bl sub_08078AC0 ldr r0, _08092C94 @ =0x00000111 bl PlaySFX _08092C92: pop {r4, r5, pc} .align 2, 0 _08092C94: .4byte 0x00000111 thumb_func_start sub_08092C98 sub_08092C98: @ 0x08092C98 push {lr} bl sub_0805E780 pop {pc} thumb_func_start sub_08092CA0 sub_08092CA0: @ 0x08092CA0 push {r4, lr} adds r4, r0, #0 adds r0, #0x45 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 beq _08092CC0 ldr r0, _08092CD4 @ =gUnk_020342F8 subs r1, #1 bl sub_0801D5A8 cmp r0, #0 bne _08092CC0 bl sub_0805E780 _08092CC0: ldr r0, _08092CD8 @ =gUnk_081227F4 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 pop {r4, pc} .align 2, 0 _08092CD4: .4byte gUnk_020342F8 _08092CD8: .4byte gUnk_081227F4 thumb_func_start sub_08092CDC sub_08092CDC: @ 0x08092CDC push {r4, lr} adds r4, r0, #0 movs r2, #1 strb r2, [r4, #0xc] ldr r0, _08092D48 @ =gUnk_080FD320 str r0, [r4, #0x48] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r0, r4, #0 adds r0, #0x3f strb r2, [r0] adds r1, r4, #0 adds r1, #0x3c movs r0, #0x47 strb r0, [r1] adds r1, #4 movs r0, #0x44 strb r0, [r1] subs r1, #5 movs r0, #0x80 strb r0, [r1] ldrb r2, [r4, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x40 orrs r0, r2 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] ands r1, r0 orrs r1, r2 strb r1, [r4, #0x19] ldrb r0, [r4, #0xa] strb r0, [r4, #0x14] lsls r0, r0, #3 strb r0, [r4, #0x15] movs r0, #0xe0 lsls r0, r0, #3 strh r0, [r4, #0x24] ldrb r0, [r4, #0xb] cmp r0, #1 bne _08092D50 ldr r1, _08092D4C @ =0x00000161 adds r0, r4, #0 bl sub_0801D2B4 adds r0, r4, #0 movs r1, #1 bl UpdateSprite b _08092D5C .align 2, 0 _08092D48: .4byte gUnk_080FD320 _08092D4C: .4byte 0x00000161 _08092D50: ldr r0, _08092D78 @ =0x0000FFE8 strh r0, [r4, #0x36] adds r0, r4, #0 movs r1, #1 bl UpdateSprite _08092D5C: ldrb r1, [r4, #0x10] movs r0, #2 ands r0, r1 cmp r0, #0 beq _08092D74 adds r0, r4, #0 bl sub_0807DD64 adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC _08092D74: pop {r4, pc} .align 2, 0 _08092D78: .4byte 0x0000FFE8 thumb_func_start sub_08092D7C sub_08092D7C: @ 0x08092D7C push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r1, [r5, #0x10] movs r0, #2 ands r0, r1 cmp r0, #0 beq _08092D92 adds r0, r5, #0 movs r1, #0 bl sub_0807DDAC _08092D92: ldrb r0, [r5, #0x18] lsls r0, r0, #0x1e cmp r0, #0 beq _08092E84 adds r0, r5, #0 bl sub_08004274 ldr r6, _08092E04 @ =gLinkState ldr r0, [r6, #0x30] movs r3, #0x80 ands r0, r3 cmp r0, #0 bne _08092E84 adds r0, r6, #0 adds r0, #0x3c ldrb r0, [r0] cmp r0, #0 bne _08092E84 ldr r4, _08092E08 @ =gLinkEntity ldrb r2, [r4, #0xc] cmp r2, #4 beq _08092DC8 ldrb r1, [r4, #0x10] adds r0, r3, #0 ands r0, r1 cmp r0, #0 beq _08092E84 _08092DC8: cmp r2, #6 beq _08092E84 adds r0, r5, #0 adds r1, r4, #0 movs r2, #0xc movs r3, #0xc bl sub_0800419C cmp r0, #0 beq _08092E84 ldr r0, [r6, #0x30] movs r1, #0x80 lsls r1, r1, #0x11 ands r0, r1 cmp r0, #0 bne _08092E0C ldrb r0, [r4, #0xc] cmp r0, #4 beq _08092E0C ldrb r0, [r5, #0xb] cmp r0, #1 beq _08092E16 movs r0, #0x36 ldrsh r1, [r4, r0] movs r0, #0x10 rsbs r0, r0, #0 cmp r1, r0 bgt _08092E84 b _08092E16 .align 2, 0 _08092E04: .4byte gLinkState _08092E08: .4byte gLinkEntity _08092E0C: ldr r0, _08092E88 @ =gLinkEntity movs r1, #0x36 ldrsh r0, [r0, r1] cmp r0, #0 beq _08092E84 _08092E16: ldr r4, _08092E88 @ =gLinkEntity adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition adds r0, r5, #0 bl sub_08004542 adds r0, r4, #0 bl sub_08004542 adds r1, r4, #0 adds r1, #0x38 movs r0, #1 strb r0, [r1] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldr r1, _08092E8C @ =gLinkState movs r0, #0x1f strb r0, [r1, #0xc] ldrb r2, [r5, #0xb] adds r0, r1, #0 adds r0, #0x38 strb r2, [r0] adds r1, #0x39 movs r0, #0xff strb r0, [r1] adds r4, #0x29 ldrb r1, [r4] lsls r1, r1, #0x1d lsrs r1, r1, #0x1d subs r1, #1 adds r3, r5, #0 adds r3, #0x29 movs r0, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] ldrb r0, [r5, #0xc] adds r0, #1 strb r0, [r5, #0xc] bl sub_08077B20 ldr r0, _08092E90 @ =0x00000153 bl PlaySFX movs r0, #0x79 bl PlaySFX _08092E84: pop {r4, r5, r6, pc} .align 2, 0 _08092E88: .4byte gLinkEntity _08092E8C: .4byte gLinkState _08092E90: .4byte 0x00000153 thumb_func_start sub_08092E94 sub_08092E94: @ 0x08092E94 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 ldr r1, _08092ED0 @ =gLinkEntity adds r0, r4, #0 movs r2, #0xc movs r3, #0xc bl sub_0800419C cmp r0, #0 bne _08092ECE adds r0, r4, #0 bl sub_0800455E ldrb r2, [r4, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x40 orrs r0, r2 strb r0, [r4, #0x1b] ldrb r0, [r4, #0x19] ands r1, r0 orrs r1, r2 strb r1, [r4, #0x19] ldrb r0, [r4, #0xc] subs r0, #1 strb r0, [r4, #0xc] _08092ECE: pop {r4, pc} .align 2, 0 _08092ED0: .4byte gLinkEntity thumb_func_start sub_08092ED4 sub_08092ED4: @ 0x08092ED4 push {lr} ldr r2, _08092EE8 @ =gUnk_0812283C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08092EE8: .4byte gUnk_0812283C thumb_func_start sub_08092EEC sub_08092EEC: @ 0x08092EEC push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] bl sub_080932D8 cmp r0, #1 beq _08092F2C cmp r0, #2 beq _08092F3A movs r0, #1 strb r0, [r4, #0xc] movs r1, #0 movs r2, #0x80 strh r2, [r4, #0x24] strb r0, [r4, #0x16] strb r1, [r4, #0xe] strb r1, [r4, #0xf] adds r1, r4, #0 adds r1, #0x7a movs r0, #0x20 strb r0, [r1] adds r0, r4, #0 adds r0, #0x7b strb r2, [r0] ldrb r0, [r4, #0xa] cmp r0, #0 bne _08092F48 ldr r0, _08092F28 @ =gUnk_080FD288 str r0, [r4, #0x48] b _08092F48 .align 2, 0 _08092F28: .4byte gUnk_080FD288 _08092F2C: movs r0, #4 strb r0, [r4, #0xc] ldrh r0, [r4, #0x2e] subs r0, #0x20 strh r0, [r4, #0x2e] movs r5, #2 b _08092F5E _08092F3A: movs r0, #4 strb r0, [r4, #0xc] ldrh r0, [r4, #0x2e] adds r0, #0x20 strh r0, [r4, #0x2e] movs r5, #3 b _08092F5E _08092F48: movs r5, #0 adds r1, r4, #0 adds r1, #0x86 ldrh r0, [r1] cmp r0, #0 beq _08092F5E bl sub_0807CBE4 cmp r0, #0 bne _08092F5E movs r5, #1 _08092F5E: adds r0, r4, #0 adds r1, r5, #0 bl sub_080931A4 pop {r4, r5, pc} thumb_func_start sub_08092F68 sub_08092F68: @ 0x08092F68 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r6, r0, #0 ldr r0, _08092FA4 @ =gLinkEntity movs r2, #0x2e ldrsh r1, [r0, r2] movs r2, #0x2e ldrsh r0, [r6, r2] subs r1, r1, r0 mov r8, r1 adds r1, r6, #0 adds r1, #0x86 ldrh r0, [r1] cmp r0, #0 beq _08092FA8 bl sub_0807CBE4 cmp r0, #0 bne _08092F92 b _080930E6 _08092F92: adds r0, r6, #0 adds r0, #0x7a ldrb r0, [r0] cmp r0, #0 beq _08092FA8 adds r0, r6, #0 bl sub_080932A8 b _080930E6 .align 2, 0 _08092FA4: .4byte gLinkEntity _08092FA8: adds r1, r6, #0 adds r1, #0x7b ldrb r2, [r1] movs r0, #0x3f ands r0, r2 adds r7, r1, #0 cmp r0, #0 bne _08092FD6 movs r0, #0xf movs r4, #0 orrs r0, r2 strb r0, [r7] adds r0, r6, #0 movs r1, #0 bl sub_080931A4 mov r0, r8 cmp r0, #0 bge _08092FD6 ldrb r0, [r7] movs r1, #0x40 orrs r0, r1 strb r0, [r7] _08092FD6: ldrb r1, [r7] movs r0, #0x40 ands r0, r1 cmp r0, #0 beq _08092FEA adds r5, r6, #0 adds r5, #0x78 ldrh r0, [r5] subs r0, #1 b _08092FF2 _08092FEA: adds r5, r6, #0 adds r5, #0x78 ldrh r0, [r5] adds r0, #1 _08092FF2: adds r4, r6, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_080002B0 adds r1, r0, #0 ldr r0, _08093034 @ =0x00004031 cmp r1, r0 bhi _08093040 subs r0, #1 cmp r1, r0 blo _08093040 movs r0, #3 strb r0, [r6, #0xc] ldr r0, _08093038 @ =gLinkEntity ldrb r0, [r0, #0x14] lsls r0, r0, #2 strb r0, [r6, #0x15] movs r0, #0x80 strh r0, [r6, #0x24] movs r0, #0x40 strb r0, [r6, #0xe] adds r0, r6, #0 movs r1, #0x50 bl sub_0805E4E0 ldr r0, _0809303C @ =0x0000010F bl sub_08004488 adds r0, r6, #0 bl sub_08093248 b _080930E6 .align 2, 0 _08093034: .4byte 0x00004031 _08093038: .4byte gLinkEntity _0809303C: .4byte 0x0000010F _08093040: ldr r0, _0809307C @ =gLinkEntity ldrb r1, [r0, #0x14] movs r0, #2 ands r0, r1 cmp r0, #0 beq _080930E6 adds r0, r6, #0 bl sub_08078930 adds r3, r7, #0 ldrb r2, [r3] movs r0, #0x80 ands r0, r2 cmp r0, #0 beq _08093088 movs r1, #0x7f ands r1, r2 strb r1, [r3] movs r0, #0x40 ands r0, r1 cmp r0, #0 beq _0809309C ldr r0, _08093080 @ =0x0000402C ldrh r1, [r5] subs r1, #1 ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _08093084 @ =0x0000403D b _080930AA .align 2, 0 _0809307C: .4byte gLinkEntity _08093080: .4byte 0x0000402C _08093084: .4byte 0x0000403D _08093088: movs r0, #0x40 ands r0, r2 cmp r0, #0 beq _080930C0 mov r1, r8 cmp r1, #4 ble _080930E6 movs r0, #0x3f ands r0, r2 strb r0, [r3] _0809309C: ldr r0, _080930B8 @ =0x0000403D ldrh r1, [r5] subs r1, #1 ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _080930BC @ =0x0000402D _080930AA: ldrh r1, [r5] adds r1, #1 ldrb r2, [r4] bl UpdateCollisionLayer b _080930E6 .align 2, 0 _080930B8: .4byte 0x0000403D _080930BC: .4byte 0x0000402D _080930C0: mov r1, r8 rsbs r0, r1, #0 cmp r0, #4 ble _080930E6 movs r0, #0x40 orrs r0, r2 strb r0, [r7] ldr r0, _080930EC @ =0x0000402C ldrh r1, [r5] subs r1, #1 ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _080930F0 @ =0x0000403D ldrh r1, [r5] adds r1, #1 ldrb r2, [r4] bl UpdateCollisionLayer _080930E6: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _080930EC: .4byte 0x0000402C _080930F0: .4byte 0x0000403D thumb_func_start sub_080930F4 sub_080930F4: @ 0x080930F4 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r3, [r4, #0xe] cmp r3, #0 beq _08093104 bl sub_08093280 b _08093174 _08093104: ldr r5, _0809315C @ =gLinkState ldrb r0, [r5, #5] cmp r0, #0x12 bne _08093168 ldr r6, _08093160 @ =gLinkEntity adds r0, r6, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #2 ands r0, r1 cmp r0, #0 beq _08093174 ldrb r0, [r4, #0xf] adds r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #8 bls _08093174 movs r0, #0x10 strb r0, [r5, #0xc] adds r0, r5, #0 adds r0, #0x38 movs r2, #0x40 strb r2, [r0] ldr r0, [r5, #0x30] movs r1, #1 orrs r0, r1 str r0, [r5, #0x30] strh r3, [r6, #0x2c] strh r3, [r6, #0x30] ldrb r0, [r6, #0x14] movs r1, #4 eors r0, r1 lsls r0, r0, #2 strb r0, [r4, #0x15] strb r2, [r4, #0xe] ldr r0, _08093164 @ =0x0000010F bl sub_08004488 adds r0, r4, #0 bl sub_08093248 b _08093174 .align 2, 0 _0809315C: .4byte gLinkState _08093160: .4byte gLinkEntity _08093164: .4byte 0x0000010F _08093168: ldrb r0, [r4, #0xd] cmp r0, #6 bne _08093174 movs r0, #1 strb r0, [r4, #0xc] strb r3, [r4, #0xf] _08093174: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_08093178 sub_08093178: @ 0x08093178 push {r4, lr} adds r4, r0, #0 bl sub_0800445C adds r0, r4, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08093198 adds r0, r4, #0 bl sub_08093334 _08093198: adds r0, r4, #0 bl sub_08093364 pop {r4, pc} thumb_func_start nullsub_120 nullsub_120: @ 0x080931A0 bx lr .align 2, 0 thumb_func_start sub_080931A4 sub_080931A4: @ 0x080931A4 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r1, #0 movs r1, #0x2e ldrsh r2, [r0, r1] ldr r3, _080931F0 @ =gRoomControls ldrh r1, [r3, #6] subs r2, r2, r1 asrs r2, r2, #4 movs r4, #0x3f ands r2, r4 movs r6, #0x32 ldrsh r1, [r0, r6] ldrh r3, [r3, #8] subs r1, r1, r3 asrs r1, r1, #4 ands r1, r4 lsls r1, r1, #6 orrs r2, r1 adds r1, r0, #0 adds r1, #0x78 strh r2, [r1] ldrh r1, [r1] subs r1, #0x40 mov r8, r1 adds r0, #0x38 ldrb r7, [r0] cmp r5, #1 beq _080931F4 cmp r5, #1 blo _0809320C cmp r5, #2 beq _080931FC cmp r5, #3 beq _08093204 b _0809320C .align 2, 0 _080931F0: .4byte gRoomControls _080931F4: ldr r0, _080931F8 @ =gUnk_08122862 b _0809320E .align 2, 0 _080931F8: .4byte gUnk_08122862 _080931FC: ldr r0, _08093200 @ =gUnk_08122874 b _0809320E .align 2, 0 _08093200: .4byte gUnk_08122874 _08093204: ldr r0, _08093208 @ =gUnk_08122886 b _0809320E .align 2, 0 _08093208: .4byte gUnk_08122886 _0809320C: ldr r0, _08093230 @ =gUnk_08122850 _0809320E: movs r4, #0 movs r6, #0 adds r5, r0, #0 _08093214: mov r0, r8 adds r1, r0, r6 adds r1, r1, r4 subs r1, #1 ldrh r0, [r5] adds r2, r7, #0 bl UpdateCollisionLayer cmp r4, #2 beq _08093234 cmp r4, #5 beq _08093238 b _0809323A .align 2, 0 _08093230: .4byte gUnk_08122850 _08093234: movs r6, #0x3d b _0809323A _08093238: movs r6, #0x7a _0809323A: adds r5, #2 adds r4, #1 cmp r4, #8 bls _08093214 pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08093248 sub_08093248: @ 0x08093248 push {r4, r5, r6, r7, lr} adds r1, r0, #0 adds r1, #0x78 ldrh r1, [r1] adds r7, r1, #0 subs r7, #0x40 adds r0, #0x38 ldrb r6, [r0] movs r4, #0 movs r5, #0 _0809325C: adds r0, r7, r5 adds r0, r0, r4 subs r0, #1 adds r1, r6, #0 bl sub_0807BA8C cmp r4, #2 beq _08093272 cmp r4, #5 beq _08093276 b _08093278 _08093272: movs r5, #0x3d b _08093278 _08093276: movs r5, #0x7a _08093278: adds r4, #1 cmp r4, #8 bls _0809325C pop {r4, r5, r6, r7, pc} thumb_func_start sub_08093280 sub_08093280: @ 0x08093280 push {r4, lr} adds r4, r0, #0 bl sub_0800445C adds r0, r4, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080932A0 adds r0, r4, #0 bl sub_08093334 _080932A0: adds r0, r4, #0 bl sub_08093364 pop {r4, pc} thumb_func_start sub_080932A8 sub_080932A8: @ 0x080932A8 push {lr} adds r1, r0, #0 adds r2, r1, #0 adds r2, #0x7a ldrb r0, [r2] subs r0, #1 strb r0, [r2] movs r2, #3 ands r2, r0 cmp r2, #1 beq _080932C8 cmp r2, #3 beq _080932D0 adds r1, #0x62 movs r0, #0 b _080932D4 _080932C8: adds r0, r1, #0 adds r0, #0x62 strb r2, [r0] b _080932D6 _080932D0: adds r1, #0x62 movs r0, #0xff _080932D4: strb r0, [r1] _080932D6: pop {pc} thumb_func_start sub_080932D8 sub_080932D8: @ 0x080932D8 push {r4, lr} lsls r0, r0, #3 ldr r1, _080932F0 @ =gUnk_08122898 adds r4, r0, r1 ldr r0, [r4] ldrh r1, [r4, #4] bl GetProgressFlagWithOffset cmp r0, #0 beq _080932F4 movs r0, #1 b _08093306 .align 2, 0 _080932F0: .4byte gUnk_08122898 _080932F4: ldr r0, [r4] ldrh r1, [r4, #6] bl GetProgressFlagWithOffset cmp r0, #0 bne _08093304 movs r0, #0 b _08093306 _08093304: movs r0, #2 _08093306: pop {r4, pc} thumb_func_start sub_08093308 sub_08093308: @ 0x08093308 push {lr} adds r2, r1, #0 lsls r0, r0, #3 ldr r1, _08093320 @ =gUnk_08122898 adds r1, r0, r1 cmp r2, #1 bne _08093324 ldr r0, [r1] ldrh r1, [r1, #4] bl sub_0807CC9C b _08093330 .align 2, 0 _08093320: .4byte gUnk_08122898 _08093324: cmp r2, #2 bne _08093330 ldr r0, [r1] ldrh r1, [r1, #6] bl sub_0807CC9C _08093330: pop {pc} .align 2, 0 thumb_func_start sub_08093334 sub_08093334: @ 0x08093334 push {r4, r5, lr} adds r4, r0, #0 movs r0, #4 strb r0, [r4, #0xc] ldrb r1, [r4, #0x15] movs r0, #0x10 ands r0, r1 movs r5, #2 cmp r0, #0 beq _0809334A movs r5, #1 _0809334A: adds r1, r5, #1 adds r0, r4, #0 bl sub_080931A4 ldrb r0, [r4, #0xa] adds r1, r5, #0 bl sub_08093308 movs r0, #0x72 bl sub_08004488 pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08093364 sub_08093364: @ 0x08093364 push {r4, r5, lr} adds r5, r0, #0 ldrb r1, [r5, #0xe] movs r0, #3 ands r0, r1 cmp r0, #0 bne _080933BC movs r0, #0xf movs r1, #0x11 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _080933BC str r5, [r4, #0x50] adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldrb r1, [r5, #0x15] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _0809339C ldrh r0, [r4, #0x2e] adds r0, #0x12 b _080933A0 _0809339C: ldrh r0, [r4, #0x2e] subs r0, #0x12 _080933A0: strh r0, [r4, #0x2e] movs r0, #0x32 ldrsh r2, [r4, r0] ldrb r1, [r5, #0xe] movs r0, #8 ands r0, r1 cmp r0, #0 beq _080933B6 adds r0, r2, #0 adds r0, #8 b _080933BA _080933B6: adds r0, r2, #0 subs r0, #8 _080933BA: strh r0, [r4, #0x32] _080933BC: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080933C0 sub_080933C0: @ 0x080933C0 push {lr} ldr r2, _080933D4 @ =gUnk_081228B0 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080933D4: .4byte gUnk_081228B0 thumb_func_start sub_080933D8 sub_080933D8: @ 0x080933D8 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4, #0xa] strb r0, [r4, #0x1e] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip ldr r0, _080933F8 @ =gUnk_081228A8 str r0, [r4, #0x48] adds r0, r4, #0 bl sub_080787B4 pop {r4, pc} .align 2, 0 _080933F8: .4byte gUnk_081228A8 thumb_func_start sub_080933FC sub_080933FC: @ 0x080933FC push {lr} adds r2, r0, #0 adds r1, r2, #0 adds r1, #0x39 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 beq _08093420 movs r0, #0 strb r0, [r1] ldr r1, _08093424 @ =gUnk_081228B8 ldrb r0, [r2, #0xa] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] adds r1, r2, #0 bl TextboxNoOverlap _08093420: pop {pc} .align 2, 0 _08093424: .4byte gUnk_081228B8 thumb_func_start sub_08093428 sub_08093428: @ 0x08093428 push {r4, lr} adds r4, r0, #0 ldr r0, _0809345C @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 lsls r1, r1, #0x11 ands r0, r1 cmp r0, #0 bne _0809344A ldrb r0, [r4, #0xa] cmp r0, #0 bne _08093446 ldr r1, _08093460 @ =gRoomControls ldr r0, _08093464 @ =gLinkEntity str r0, [r1, #0x30] _08093446: bl sub_0805E780 _0809344A: ldr r0, _08093468 @ =gUnk_081228C8 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 pop {r4, pc} .align 2, 0 _0809345C: .4byte gLinkState _08093460: .4byte gRoomControls _08093464: .4byte gLinkEntity _08093468: .4byte gUnk_081228C8 thumb_func_start sub_0809346C sub_0809346C: @ 0x0809346C push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0xff strb r0, [r4, #0x1f] ldr r0, _080934C0 @ =gLinkEntity ldrb r1, [r0, #0x1a] lsls r1, r1, #0x1c lsrs r1, r1, #0x1c ldrb r2, [r4, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x1a] ldrb r0, [r4, #0xa] cmp r0, #0 bne _080934B8 ldr r0, _080934C4 @ =gRoomControls str r4, [r0, #0x30] ldrb r0, [r4, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x19] adds r1, r4, #0 adds r1, #0x6e movs r0, #0xc0 lsls r0, r0, #1 strh r0, [r1] adds r1, #4 strh r0, [r1] adds r0, r4, #0 movs r1, #0x61 movs r2, #1 movs r3, #0 bl CreateObjectWithParent _080934B8: adds r0, r4, #0 bl sub_080934C8 pop {r4, pc} .align 2, 0 _080934C0: .4byte gLinkEntity _080934C4: .4byte gRoomControls thumb_func_start sub_080934C8 sub_080934C8: @ 0x080934C8 push {lr} ldr r2, _080934DC @ =gUnk_081228D0 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080934DC: .4byte gUnk_081228D0 thumb_func_start sub_080934E0 sub_080934E0: @ 0x080934E0 push {r4, r5, r6, r7, lr} adds r5, r0, #0 adds r4, r5, #0 adds r4, #0x6e ldrh r1, [r4] movs r2, #0 ldrsh r0, [r4, r2] cmp r0, #0 bge _080934F6 rsbs r0, r1, #0 strh r0, [r4] _080934F6: ldr r0, _08093518 @ =gLinkEntity ldrb r0, [r0, #0xd] cmp r0, #2 beq _0809351C cmp r0, #2 bgt _080935B0 cmp r0, #1 bne _080935B0 adds r1, r5, #0 adds r1, #0x72 ldrh r0, [r1] subs r0, #4 strh r0, [r1] adds r6, r4, #0 adds r7, r1, #0 b _080935BE .align 2, 0 _08093518: .4byte gLinkEntity _0809351C: ldrb r2, [r5, #0xf] adds r0, r2, #0 cmp r0, #0 bne _08093560 adds r0, r5, #0 adds r0, #0x72 ldrh r1, [r0] adds r7, r0, #0 cmp r1, #0x80 bls _08093538 adds r0, r1, #0 subs r0, #0x20 strh r0, [r7] b _08093544 _08093538: adds r0, r2, #1 strb r0, [r5, #0xf] movs r0, #0x92 lsls r0, r0, #1 bl PlaySFX _08093544: adds r0, r5, #0 adds r0, #0x6e ldrh r2, [r0] ldr r1, _0809355C @ =0x0000011F adds r6, r0, #0 cmp r2, r1 bhi _080935BE adds r0, r2, #0 adds r0, #0x40 strh r0, [r6] b _080935BE .align 2, 0 _0809355C: .4byte 0x0000011F _08093560: cmp r0, #0xff beq _080935A6 adds r0, r5, #0 adds r0, #0x72 ldrh r1, [r0] adds r7, r0, #0 cmp r1, #0xff bhi _08093576 adds r0, r1, #0 adds r0, #0x20 b _0809357A _08093576: movs r0, #0x80 lsls r0, r0, #1 _0809357A: strh r0, [r7] adds r0, r5, #0 adds r0, #0x6e ldrh r1, [r0] movs r2, #0x80 lsls r2, r2, #1 adds r6, r0, #0 cmp r1, r2 bls _08093594 adds r0, r1, #0 subs r0, #0x20 strh r0, [r6] b _08093596 _08093594: strh r2, [r6] _08093596: ldrh r1, [r6] movs r0, #0x80 lsls r0, r0, #1 cmp r1, r0 bne _080935BE movs r0, #0xff strb r0, [r5, #0xf] b _080935BE _080935A6: adds r0, r5, #0 bl sub_080936C8 adds r6, r4, #0 b _080935BA _080935B0: adds r0, r5, #0 bl sub_080936C8 adds r6, r5, #0 adds r6, #0x6e _080935BA: adds r7, r5, #0 adds r7, #0x72 _080935BE: ldr r0, _080935E4 @ =gLinkEntity ldrb r1, [r0, #0x14] movs r0, #2 ands r0, r1 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0 beq _080935E8 movs r0, #1 strb r0, [r5, #0x1e] lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #2 bne _080935EA ldrh r0, [r6] rsbs r0, r0, #0 strh r0, [r6] b _080935EA .align 2, 0 _080935E4: .4byte gLinkEntity _080935E8: strb r0, [r5, #0x1e] _080935EA: ldrb r0, [r5, #0x1e] ldrb r1, [r5, #0x1f] cmp r0, r1 beq _080935FE strb r0, [r5, #0x1f] ldrb r1, [r5, #0x1e] ldrh r2, [r5, #0x12] adds r0, r5, #0 bl sub_080042D0 _080935FE: ldr r4, _0809364C @ =gLinkEntity adds r0, r4, #0 adds r1, r5, #0 bl CopyPosition ldrb r2, [r4, #0x1b] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r5, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r5, #0x1b] ldrb r0, [r4, #0x19] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r5, #0x19] ands r1, r2 orrs r1, r0 strb r1, [r5, #0x19] ldrh r1, [r7] adds r0, r5, #0 movs r2, #0xa movs r3, #2 bl sub_0806FCF4 ldrh r1, [r6] ldrh r2, [r7] adds r0, r5, #0 movs r3, #0 bl sub_0805EC9C adds r0, r4, #0 movs r1, #1 adds r2, r5, #0 bl sub_0806FEBC pop {r4, r5, r6, r7, pc} .align 2, 0 _0809364C: .4byte gLinkEntity thumb_func_start sub_08093650 sub_08093650: @ 0x08093650 push {r4, r5, lr} adds r4, r0, #0 ldr r5, _080936C4 @ =gLinkEntity ldrb r0, [r5, #0x15] lsrs r1, r0, #1 adds r0, r0, r1 asrs r0, r0, #2 adds r0, #2 strb r0, [r4, #0x1e] ldrb r1, [r4, #0x1f] cmp r0, r1 beq _08093674 strb r0, [r4, #0x1f] ldrb r1, [r4, #0x1e] ldrh r2, [r4, #0x12] adds r0, r4, #0 bl sub_080042D0 _08093674: adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldrb r2, [r5, #0x1b] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r4, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r4, #0x1b] ldrb r0, [r5, #0x19] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r4, #0x19] ands r1, r2 orrs r1, r0 strb r1, [r4, #0x19] ldr r0, [r4, #0x50] adds r0, #0x72 ldrh r1, [r0] adds r0, r4, #0 movs r2, #0x18 movs r3, #0 bl sub_0806FCF4 adds r1, r4, #0 adds r1, #0x63 ldrb r0, [r1] rsbs r0, r0, #0 strb r0, [r1] adds r0, r5, #0 movs r1, #0 adds r2, r4, #0 bl sub_0806FEBC pop {r4, r5, pc} .align 2, 0 _080936C4: .4byte gLinkEntity thumb_func_start sub_080936C8 sub_080936C8: @ 0x080936C8 push {r4, r5, lr} adds r4, r0, #0 ldr r0, _08093714 @ =gLinkEntity ldr r0, [r0, #0x7c] lsrs r2, r0, #2 movs r3, #0x9c lsls r3, r3, #1 adds r1, r3, #0 subs r1, r1, r2 adds r5, r4, #0 adds r5, #0x76 strh r1, [r5] movs r1, #0x3c bl __divsi3 movs r1, #8 subs r1, r1, r0 adds r0, r4, #0 adds r0, #0x74 strh r1, [r0] ldrb r3, [r4, #0xe] cmp r3, #0 bne _0809372C adds r1, r4, #0 adds r1, #0x6e ldrh r2, [r1] ldrh r0, [r5] cmp r0, r2 bhs _08093718 adds r0, r2, #0 subs r0, #8 strh r0, [r1] adds r1, #4 ldrh r0, [r1] adds r0, #8 strh r0, [r1] b _0809375C .align 2, 0 _08093714: .4byte gLinkEntity _08093718: adds r0, r3, #1 strb r0, [r4, #0xe] ldrh r0, [r5] strh r0, [r1] ldrh r0, [r5] adds r0, #0x30 adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] b _0809375C _0809372C: ldrh r0, [r5] adds r0, #0x30 adds r1, r4, #0 adds r1, #0x6e ldrh r2, [r1] cmp r0, r2 ble _0809374A adds r0, r2, #0 adds r0, #8 strh r0, [r1] adds r1, #4 ldrh r0, [r1] subs r0, #8 strh r0, [r1] b _0809375C _0809374A: movs r0, #0 strb r0, [r4, #0xe] ldrh r0, [r5] adds r0, #0x30 strh r0, [r1] ldrh r1, [r5] adds r0, r4, #0 adds r0, #0x72 strh r1, [r0] _0809375C: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08093760 sub_08093760: @ 0x08093760 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xa] cmp r0, #2 beq _08093794 cmp r0, #2 bgt _08093778 cmp r0, #0 beq _08093784 cmp r0, #1 beq _0809378C b _080937BC _08093778: cmp r0, #3 beq _080937AC cmp r0, #0x41 bgt _080937BC cmp r0, #0x40 blt _080937BC _08093784: ldr r0, _08093788 @ =gUnk_081228D8 b _08093796 .align 2, 0 _08093788: .4byte gUnk_081228D8 _0809378C: ldr r0, _08093790 @ =gUnk_081228E0 b _08093796 .align 2, 0 _08093790: .4byte gUnk_081228E0 _08093794: ldr r0, _080937A8 @ =gUnk_081228E8 _08093796: ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 b _080937BC .align 2, 0 _080937A8: .4byte gUnk_081228E8 _080937AC: ldr r0, _080937C0 @ =gUnk_081228F0 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 _080937BC: pop {pc} .align 2, 0 _080937C0: .4byte gUnk_081228F0 thumb_func_start sub_080937C4 sub_080937C4: @ 0x080937C4 push {r4, r5, r6, lr} adds r4, r0, #0 movs r5, #1 strb r5, [r4, #0xc] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08093808 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r6, #0x32 ldrsh r0, [r4, r6] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r0, r4, #0 adds r0, #0x76 strh r1, [r0] ldrb r0, [r4, #0xa] cmp r0, #0x41 beq _0809386A cmp r0, #0x41 bgt _0809387A cmp r0, #0 beq _0809380C cmp r0, #0x40 beq _08093840 b _0809387A .align 2, 0 _08093808: .4byte gRoomControls _0809380C: strb r5, [r4, #0x1e] ldrb r1, [r4, #0x19] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x19] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 adds r0, #0x78 strh r5, [r0] adds r1, r4, #0 adds r1, #0x7a movs r0, #0x3c strh r0, [r1] movs r0, #0x62 movs r1, #0x40 b _08093854 _08093840: movs r0, #2 strb r0, [r4, #0x1e] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] movs r0, #0x62 movs r1, #0x41 _08093854: movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _0809387A str r4, [r1, #0x50] adds r0, r4, #0 bl CopyPosition b _0809387A _0809386A: movs r0, #0 strb r0, [r4, #0x1e] ldrb r1, [r4, #0x1b] movs r0, #0x3f ands r0, r1 movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x1b] _0809387A: adds r0, r4, #0 bl sub_08093A1C pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_08093884 sub_08093884: @ 0x08093884 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xa] cmp r0, #0 bne _080938B8 ldr r0, _080938A8 @ =gLinkEntity movs r3, #0x32 ldrsh r1, [r0, r3] movs r3, #0x32 ldrsh r0, [r2, r3] adds r0, #0x20 cmp r1, r0 bge _080938AC ldrb r0, [r2, #0x19] movs r1, #0x3f ands r1, r0 movs r0, #0x40 b _080938B4 .align 2, 0 _080938A8: .4byte gLinkEntity _080938AC: ldrb r0, [r2, #0x19] movs r1, #0x3f ands r1, r0 movs r0, #0x80 _080938B4: orrs r1, r0 strb r1, [r2, #0x19] _080938B8: adds r0, r2, #0 bl sub_08093C70 pop {pc} thumb_func_start sub_080938C0 sub_080938C0: @ 0x080938C0 push {r4, r5, lr} movs r1, #1 strb r1, [r0, #0xc] ldrb r2, [r0, #0xb] ands r1, r2 adds r1, #3 strb r1, [r0, #0x1e] adds r3, r0, #0 adds r3, #0x29 ldrb r1, [r3] movs r2, #7 orrs r1, r2 strb r1, [r3] movs r1, #0x2e ldrsh r2, [r0, r1] ldr r3, _08093908 @ =gRoomControls ldrh r1, [r3, #6] subs r2, r2, r1 asrs r2, r2, #4 movs r4, #0x3f ands r2, r4 movs r5, #0x32 ldrsh r1, [r0, r5] ldrh r3, [r3, #8] subs r1, r1, r3 asrs r1, r1, #4 ands r1, r4 lsls r1, r1, #6 orrs r2, r1 adds r1, r0, #0 adds r1, #0x76 strh r2, [r1] bl sub_08093A1C pop {r4, r5, pc} .align 2, 0 _08093908: .4byte gRoomControls thumb_func_start nullsub_524 nullsub_524: @ 0x0809390C bx lr .align 2, 0 thumb_func_start sub_08093910 sub_08093910: @ 0x08093910 push {r4, r5, r6, lr} adds r5, r0, #0 movs r3, #1 strb r3, [r5, #0xc] ldrb r1, [r5, #0xb] adds r0, r3, #0 ands r0, r1 adds r0, #5 strb r0, [r5, #0x1e] ldrb r0, [r5, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r5, #0x19] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] movs r0, #0x2e ldrsh r1, [r5, r0] ldr r2, _0809397C @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r4, #0x3f ands r1, r4 movs r6, #0x32 ldrsh r0, [r5, r6] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r4 lsls r0, r0, #6 orrs r1, r0 adds r0, r5, #0 adds r0, #0x76 strh r1, [r0] ldrb r0, [r5, #0xb] ands r3, r0 cmp r3, #0 beq _0809396C adds r1, r5, #0 adds r1, #0x62 movs r0, #8 strb r0, [r1] _0809396C: adds r0, r5, #0 bl sub_08093984 adds r0, r5, #0 movs r1, #0x7b bl sub_0801D2B4 pop {r4, r5, r6, pc} .align 2, 0 _0809397C: .4byte gRoomControls thumb_func_start nullsub_525 nullsub_525: @ 0x08093980 bx lr .align 2, 0 thumb_func_start sub_08093984 sub_08093984: @ 0x08093984 push {r4, r5, r6, lr} adds r1, r0, #0 ldrb r0, [r1, #0xb] ldr r2, _080939B4 @ =gUnk_0812291E cmp r0, #0 beq _08093992 ldr r2, _080939B8 @ =gUnk_081228F8 _08093992: movs r5, #0 adds r6, r1, #0 adds r6, #0x76 adds r4, r2, #0 _0809399A: movs r0, #0 ldrsh r1, [r4, r0] ldrh r0, [r6] adds r1, r1, r0 ldr r0, _080939BC @ =0x00004074 movs r2, #1 bl UpdateCollisionLayer adds r4, #2 adds r5, #1 cmp r5, #0x12 bls _0809399A pop {r4, r5, r6, pc} .align 2, 0 _080939B4: .4byte gUnk_0812291E _080939B8: .4byte gUnk_081228F8 _080939BC: .4byte 0x00004074 thumb_func_start sub_080939C0 sub_080939C0: @ 0x080939C0 push {r4, r5, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0xb] movs r0, #3 ands r0, r1 adds r0, #7 strb r0, [r4, #0x1e] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08093A14 @ =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, #0x76 strh r1, [r0] adds r0, r4, #0 bl sub_08093A1C adds r0, r4, #0 movs r1, #0x7a bl sub_0801D2B4 pop {r4, r5, pc} .align 2, 0 _08093A14: .4byte gRoomControls thumb_func_start nullsub_526 nullsub_526: @ 0x08093A18 bx lr .align 2, 0 thumb_func_start sub_08093A1C sub_08093A1C: @ 0x08093A1C push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r2, r0, #0 ldrb r1, [r2, #0xa] cmp r1, #1 beq _08093B0C cmp r1, #1 bgt _08093A34 cmp r1, #0 beq _08093A3C b _08093C64 _08093A34: cmp r1, #3 bne _08093A3A b _08093C54 _08093A3A: b _08093C64 _08093A3C: ldr r0, _08093AF0 @ =0x00004024 adds r7, r2, #0 adds r7, #0x76 ldrh r1, [r7] adds r1, #0x3c adds r4, r2, #0 adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer ldr r5, _08093AF4 @ =0x00004022 ldrh r1, [r7] adds r1, #0x3d ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldrh r1, [r7] adds r1, #0x3e ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _08093AF8 @ =0x00004029 mov r8, r0 ldrh r1, [r7] adds r1, #0x7c ldrb r2, [r4] bl UpdateCollisionLayer ldr r6, _08093AFC @ =0x00004026 ldrh r1, [r7] adds r1, #0x7d ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer ldrh r1, [r7] adds r1, #0x7e ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer adds r5, #0x1b ldrh r1, [r7] adds r1, #0x40 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldrh r1, [r7] adds r1, #0x80 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _08093B00 @ =0x00004027 ldrh r1, [r7] adds r1, #0x41 ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _08093B04 @ =0x00004023 ldrh r1, [r7] adds r1, #0x42 ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _08093B08 @ =0x0000406D ldrh r1, [r7] adds r1, #0x43 ldrb r2, [r4] bl UpdateCollisionLayer ldrh r1, [r7] adds r1, #0x81 ldrb r2, [r4] mov r0, r8 bl UpdateCollisionLayer ldrh r1, [r7] adds r1, #0x82 ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer ldrh r1, [r7] adds r1, #0x83 b _08093B94 .align 2, 0 _08093AF0: .4byte 0x00004024 _08093AF4: .4byte 0x00004022 _08093AF8: .4byte 0x00004029 _08093AFC: .4byte 0x00004026 _08093B00: .4byte 0x00004027 _08093B04: .4byte 0x00004023 _08093B08: .4byte 0x0000406D _08093B0C: ldrb r0, [r2, #0xb] ands r1, r0 cmp r1, #0 beq _08093BB4 ldr r6, _08093BA0 @ =0x0000406D movs r0, #0x76 adds r0, r0, r2 mov r8, r0 ldrh r1, [r0] subs r1, #0x81 adds r4, r2, #0 adds r4, #0x38 ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer ldr r5, _08093BA4 @ =0x00004022 mov r2, r8 ldrh r1, [r2] subs r1, #0x41 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _08093BA8 @ =0x00004029 mov r2, r8 ldrh r1, [r2] subs r1, #2 ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _08093BAC @ =0x00004026 mov r2, r8 ldrh r1, [r2] subs r1, #1 ldrb r2, [r4] bl UpdateCollisionLayer mov r0, r8 ldrh r1, [r0] ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer mov r2, r8 ldrh r1, [r2] adds r1, #1 ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer ldr r0, _08093BB0 @ =0x0000406E mov r2, r8 ldrh r1, [r2] adds r1, #0x40 ldrb r2, [r4] bl UpdateCollisionLayer mov r0, r8 ldrh r1, [r0] adds r1, #0x41 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer mov r2, r8 ldrh r1, [r2] adds r1, #0x42 _08093B94: ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer b _08093C64 .align 2, 0 _08093BA0: .4byte 0x0000406D _08093BA4: .4byte 0x00004022 _08093BA8: .4byte 0x00004029 _08093BAC: .4byte 0x00004026 _08093BB0: .4byte 0x0000406E _08093BB4: ldr r6, _08093C40 @ =0x0000406C movs r0, #0x76 adds r0, r0, r2 mov r8, r0 ldrh r1, [r0] subs r1, #0x7f adds r4, r2, #0 adds r4, #0x38 ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer ldr r5, _08093C44 @ =0x00004022 mov r2, r8 ldrh r1, [r2] subs r1, #0x3f ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer mov r0, r8 ldrh r1, [r0] subs r1, #1 ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer mov r2, r8 ldrh r1, [r2] ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _08093C48 @ =0x00004026 mov r2, r8 ldrh r1, [r2] adds r1, #1 ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _08093C4C @ =0x0000402A mov r2, r8 ldrh r1, [r2] adds r1, #2 ldrb r2, [r4] bl UpdateCollisionLayer mov r0, r8 ldrh r1, [r0] adds r1, #0x3e ldrb r2, [r4] adds r0, r6, #0 bl UpdateCollisionLayer mov r2, r8 ldrh r1, [r2] adds r1, #0x3f ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _08093C50 @ =0x0000406F mov r2, r8 ldrh r1, [r2] adds r1, #0x40 ldrb r2, [r4] bl UpdateCollisionLayer b _08093C64 .align 2, 0 _08093C40: .4byte 0x0000406C _08093C44: .4byte 0x00004022 _08093C48: .4byte 0x00004026 _08093C4C: .4byte 0x0000402A _08093C50: .4byte 0x0000406F _08093C54: ldr r0, _08093C6C @ =0x00004022 adds r1, r2, #0 adds r1, #0x76 ldrh r1, [r1] adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer _08093C64: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08093C6C: .4byte 0x00004022 thumb_func_start sub_08093C70 sub_08093C70: @ 0x08093C70 push {r4, r5, r6, lr} adds r2, r0, #0 adds r3, r2, #0 adds r3, #0x78 ldrh r0, [r3] cmp r0, #0 beq _08093CE8 ldr r0, _08093CE0 @ =gLinkState ldrb r0, [r0, #5] cmp r0, #0 beq _08093D5C movs r0, #0 strh r0, [r3] ldr r4, _08093CE4 @ =0x00004022 adds r6, r2, #0 adds r6, #0x76 ldrh r1, [r6] adds r1, #0x3f adds r5, r2, #0 adds r5, #0x38 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer ldrh r1, [r6] adds r1, #0x40 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer ldrh r1, [r6] adds r1, #0x41 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer adds r4, #4 ldrh r1, [r6] adds r1, #0x7f ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer ldrh r1, [r6] adds r1, #0x80 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer ldrh r1, [r6] adds r1, #0x81 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer b _08093D5C .align 2, 0 _08093CE0: .4byte gLinkState _08093CE4: .4byte 0x00004022 _08093CE8: ldr r0, _08093D60 @ =gLinkState ldrb r0, [r0, #5] cmp r0, #0 bne _08093D5C adds r1, r2, #0 adds r1, #0x7a ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _08093D5C ldrh r0, [r3] adds r0, #1 strh r0, [r3] movs r0, #0x3c strh r0, [r1] ldr r5, _08093D64 @ =0x0000403D adds r6, r2, #0 adds r6, #0x76 ldrh r1, [r6] adds r1, #0x3f adds r4, r2, #0 adds r4, #0x38 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldrh r1, [r6] adds r1, #0x40 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _08093D68 @ =0x00004027 ldrh r1, [r6] adds r1, #0x41 ldrb r2, [r4] bl UpdateCollisionLayer ldrh r1, [r6] adds r1, #0x7f ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldrh r1, [r6] adds r1, #0x80 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _08093D6C @ =0x00004029 ldrh r1, [r6] adds r1, #0x81 ldrb r2, [r4] bl UpdateCollisionLayer _08093D5C: pop {r4, r5, r6, pc} .align 2, 0 _08093D60: .4byte gLinkState _08093D64: .4byte 0x0000403D _08093D68: .4byte 0x00004027 _08093D6C: .4byte 0x00004029 thumb_func_start sub_08093D70 sub_08093D70: @ 0x08093D70 push {lr} ldr r2, _08093D84 @ =gUnk_08122944 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08093D84: .4byte gUnk_08122944 thumb_func_start sub_08093D88 sub_08093D88: @ 0x08093D88 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrh r0, [r4, #0x36] subs r0, #8 strh r0, [r4, #0x36] movs r0, #0xa8 lsls r0, r0, #0xa str r0, [r4, #0x20] movs r0, #0x20 strb r0, [r4, #0xe] ldrb r0, [r4, #0xa] cmp r0, #0 beq _08093DAC cmp r0, #1 beq _08093DC4 b _08093DDE _08093DAC: adds r0, r4, #0 movs r1, #4 bl sub_0805457C cmp r0, #0 bne _08093DBC movs r0, #2 strb r0, [r4, #0xc] _08093DBC: ldr r1, [r4, #0x54] ldr r0, [r4, #0x20] str r0, [r1, #0x20] b _08093DDE _08093DC4: movs r0, #0 movs r1, #0x5f movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _08093DDE movs r0, #5 strb r0, [r1, #0xe] adds r0, r4, #0 bl sub_08093E10 _08093DDE: pop {r4, pc} thumb_func_start sub_08093DE0 sub_08093DE0: @ 0x08093DE0 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xe] subs r0, #1 strb r0, [r2, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08093DF4 movs r0, #2 strb r0, [r2, #0xc] _08093DF4: ldrb r1, [r2, #0xe] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08093E06 ldr r1, [r2, #0x54] ldrh r0, [r1, #0x32] adds r0, #1 strh r0, [r1, #0x32] _08093E06: pop {pc} thumb_func_start sub_08093E08 sub_08093E08: @ 0x08093E08 push {lr} bl sub_0805E7BC pop {pc} thumb_func_start sub_08093E10 sub_08093E10: @ 0x08093E10 push {r4, r5, lr} adds r4, r0, #0 adds r5, r1, #0 bl CopyPosition str r4, [r5, #0x50] str r5, [r4, #0x54] ldr r0, [r4, #0x20] str r0, [r5, #0x20] pop {r4, r5, pc} thumb_func_start sub_08093E24 sub_08093E24: @ 0x08093E24 push {lr} ldr r2, _08093E38 @ =gUnk_0812295C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08093E38: .4byte gUnk_0812295C thumb_func_start sub_08093E3C sub_08093E3C: @ 0x08093E3C push {r4, lr} adds r4, r0, #0 movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x38 ldrb r0, [r0] cmp r0, #0 bne _08093E6A adds r0, r4, #0 bl sub_08016A30 _08093E6A: ldrb r1, [r4, #0xa] adds r0, r4, #0 bl UpdateSprite ldrb r0, [r4, #0xa] lsls r0, r0, #2 ldr r1, _08093EA8 @ =gUnk_08122950 adds r2, r0, r1 ldrh r0, [r2] cmp r0, #0 beq _08093E90 ldrb r1, [r4, #0xb] movs r0, #0x40 ands r0, r1 cmp r0, #0 bne _08093E90 ldrh r0, [r2] bl sub_08004488 _08093E90: ldrb r1, [r4, #0xb] movs r0, #0x20 ands r0, r1 cmp r0, #0 beq _08093EA6 ldrb r0, [r4, #0x19] movs r1, #0x3f ands r1, r0 movs r0, #0x40 orrs r1, r0 strb r1, [r4, #0x19] _08093EA6: pop {r4, pc} .align 2, 0 _08093EA8: .4byte gUnk_08122950 thumb_func_start sub_08093EAC sub_08093EAC: @ 0x08093EAC push {lr} ldr r3, _08093EC8 @ =gUnk_08122964 ldr r2, _08093ECC @ =gUnk_08122950 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldrb r1, [r1, #2] lsrs r1, r1, #4 lsls r1, r1, #2 adds r1, r1, r3 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08093EC8: .4byte gUnk_08122964 _08093ECC: .4byte gUnk_08122950 thumb_func_start sub_08093ED0 sub_08093ED0: @ 0x08093ED0 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08093EEC adds r0, r4, #0 bl sub_0805E7BC _08093EEC: pop {r4, pc} .align 2, 0 thumb_func_start sub_08093EF0 sub_08093EF0: @ 0x08093EF0 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r4, [r5, #0xa] cmp r4, #1 beq _08093F40 cmp r4, #1 bgt _08093F04 cmp r4, #0 beq _08093F0A b _08093FB0 _08093F04: cmp r4, #2 beq _08093F98 b _08093FB0 _08093F0A: ldrb r0, [r5, #0xd] cmp r0, #0 bne _08093FB0 adds r0, r5, #0 bl sub_08004274 adds r0, r5, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08093FB0 movs r0, #0x64 movs r1, #1 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _08093F8E ldr r0, [r5, #0x50] str r0, [r1, #0x50] adds r0, r5, #0 bl CopyPosition b _08093F8E _08093F40: adds r0, r5, #0 bl sub_08004274 adds r1, r5, #0 adds r1, #0x5a ldrb r0, [r1] ands r4, r0 adds r6, r1, #0 cmp r4, #0 beq _08093F72 movs r0, #0 strb r0, [r6] movs r0, #0x64 movs r1, #2 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _08093F72 ldr r0, [r5, #0x50] str r0, [r1, #0x50] adds r0, r5, #0 bl CopyPosition _08093F72: ldrb r1, [r6] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08093FB0 ldr r1, [r5, #0x50] ldr r0, _08093F94 @ =gLinkEntity cmp r1, r0 bne _08093F8E movs r0, #0x7a bl PlaySFX bl sub_08079D84 _08093F8E: bl sub_0805E780 b _08093FB0 .align 2, 0 _08093F94: .4byte gLinkEntity _08093F98: adds r0, r5, #0 bl sub_08004274 adds r0, r5, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08093FB0 bl sub_0805E780 _08093FB0: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_08093FB4 sub_08093FB4: @ 0x08093FB4 push {lr} ldr r2, _08093FC8 @ =gUnk_081229B4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08093FC8: .4byte gUnk_081229B4 thumb_func_start sub_08093FCC sub_08093FCC: @ 0x08093FCC push {lr} movs r1, #1 strb r1, [r0, #0xc] adds r2, r0, #0 adds r2, #0x38 movs r1, #2 strb r1, [r2] bl UpdateSpriteOrderAndFlip pop {pc} thumb_func_start sub_08093FE0 sub_08093FE0: @ 0x08093FE0 push {r4, lr} adds r4, r0, #0 bl sub_08094064 cmp r0, #0 beq _08094062 adds r3, r4, #0 adds r3, #0x38 ldrb r0, [r3] cmp r0, #2 bne _08094024 ldr r0, _08094020 @ =gLinkEntity ldrb r0, [r0, #0xc] cmp r0, #0x1e bgt _08094002 cmp r0, #0x1d bge _08094062 _08094002: movs r0, #1 strb r0, [r3] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 b _08094060 .align 2, 0 _08094020: .4byte gLinkEntity _08094024: ldr r0, _0809404C @ =gLinkEntity ldrb r2, [r0, #0xc] cmp r2, #0x1e bgt _08094050 cmp r2, #0x1d blt _08094050 movs r0, #2 strb r0, [r3] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 b _08094060 .align 2, 0 _0809404C: .4byte gLinkEntity _08094050: adds r2, r0, #0 adds r2, #0x38 ldrb r1, [r2] movs r0, #2 ands r0, r1 cmp r0, #0 beq _08094062 movs r0, #1 _08094060: strb r0, [r2] _08094062: pop {r4, pc} thumb_func_start sub_08094064 sub_08094064: @ 0x08094064 push {lr} movs r2, #1 ldr r1, _08094080 @ =gLinkEntity movs r3, #0x2e ldrsh r1, [r1, r3] movs r3, #0x2e ldrsh r0, [r0, r3] subs r1, r1, r0 adds r1, #0x1c cmp r1, #0x38 bls _0809407C movs r2, #0 _0809407C: adds r0, r2, #0 pop {pc} .align 2, 0 _08094080: .4byte gLinkEntity thumb_func_start sub_08094084 sub_08094084: @ 0x08094084 push {r4, r5, lr} adds r4, r0, #0 ldr r5, [r4, #0x50] movs r1, #0x36 ldrsh r0, [r5, r1] cmp r0, #0 beq _0809412A ldrb r0, [r4, #0xc] cmp r0, #0 bne _080940CA movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x63 movs r0, #5 strb r0, [r1] adds r0, r4, #0 movs r1, #1 bl UpdateSprite _080940CA: ldrh r0, [r5, #0x2e] strh r0, [r4, #0x2e] ldrh r0, [r5, #0x32] strh r0, [r4, #0x32] ldrb r2, [r5, #0x1b] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r4, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r4, #0x1b] ldrb r0, [r5, #0x19] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r4, #0x19] ands r1, r2 orrs r1, r0 strb r1, [r4, #0x19] movs r0, #0x36 ldrsh r1, [r5, r0] movs r0, #0x40 rsbs r0, r0, #0 cmp r1, r0 ble _08094108 movs r3, #0x80 lsls r3, r3, #1 movs r2, #0x80 lsls r2, r2, #2 b _0809411E _08094108: movs r1, #0x36 ldrsh r0, [r5, r1] adds r0, #0x40 lsls r2, r0, #1 movs r1, #0x80 lsls r1, r1, #1 subs r3, r1, r2 lsls r0, r0, #2 movs r1, #0x80 lsls r1, r1, #2 subs r2, r1, r0 _0809411E: adds r0, r4, #0 adds r1, r3, #0 movs r3, #0 bl sub_0805EC9C b _0809412E _0809412A: bl sub_0805E780 _0809412E: pop {r4, r5, pc} thumb_func_start sub_08094130 sub_08094130: @ 0x08094130 push {lr} ldr r2, _08094144 @ =gUnk_081229BC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08094144: .4byte gUnk_081229BC thumb_func_start sub_08094148 sub_08094148: @ 0x08094148 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #1 bne _08094154 b _08094254 _08094154: cmp r0, #1 bgt _0809415E cmp r0, #0 beq _080941A8 b _0809438A _0809415E: cmp r0, #2 beq _08094164 b _0809438A _08094164: ldrb r0, [r4, #0xd] cmp r0, #0 bne _08094180 movs r0, #1 strb r0, [r4, #0xd] movs r0, #0xb4 lsls r0, r0, #1 str r0, [r4, #0x78] ldr r0, _0809417C @ =gRoomControls str r4, [r0, #0x30] b _08094198 .align 2, 0 _0809417C: .4byte gRoomControls _08094180: ldr r0, [r4, #0x78] subs r0, #1 str r0, [r4, #0x78] movs r1, #1 rsbs r1, r1, #0 cmp r0, r1 bne _08094198 ldr r1, _080941A0 @ =gRoomControls ldr r0, _080941A4 @ =gLinkEntity str r0, [r1, #0x30] bl sub_0805E780 _08094198: bl sub_08078B48 b _08094394 .align 2, 0 _080941A0: .4byte gRoomControls _080941A4: .4byte gLinkEntity _080941A8: ldr r1, _08094228 @ =gUnk_081229D0 ldrb r0, [r4, #0xb] lsls r0, r0, #2 adds r0, r0, r1 ldrb r0, [r0, #1] strb r0, [r4, #0x15] ldrb r0, [r4, #0xb] lsls r0, r0, #2 adds r0, r0, r1 ldrb r0, [r0, #2] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r2, [r4, #0x2e] adds r0, r0, r2 strh r0, [r4, #0x2e] ldrb r0, [r4, #0xb] lsls r0, r0, #2 adds r0, r0, r1 ldrb r0, [r0, #3] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r2, [r4, #0x32] adds r0, r0, r2 strh r0, [r4, #0x32] ldrb r0, [r4, #0xb] lsls r0, r0, #2 adds r0, r0, r1 ldrb r2, [r0] movs r0, #0x40 ands r0, r2 cmp r0, #0 beq _080941F0 ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x18] _080941F0: movs r0, #0x80 ands r0, r2 cmp r0, #0 beq _08094200 ldrb r0, [r4, #0x18] movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x18] _08094200: ldrb r0, [r4, #0xb] cmp r0, #3 bhi _08094230 bl Random ldr r1, _0809422C @ =0x0001FFFF ands r1, r0 movs r0, #0xa0 lsls r0, r0, #0xa orrs r0, r1 str r0, [r4, #0x20] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r4, #0x24] adds r0, r4, #0 movs r1, #0x56 bl UpdateSprite b _0809438A .align 2, 0 _08094228: .4byte gUnk_081229D0 _0809422C: .4byte 0x0001FFFF _08094230: movs r0, #0xa0 lsls r0, r0, #0xa str r0, [r4, #0x20] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r4, #0x24] bl Random movs r1, #3 ands r0, r1 ldrb r1, [r4, #0x15] orrs r0, r1 strb r0, [r4, #0x15] adds r0, r4, #0 movs r1, #0x57 bl UpdateSprite b _0809438A _08094254: ldrb r0, [r4, #0xb] cmp r0, #0 bne _08094272 adds r0, r4, #0 movs r1, #0x67 movs r2, #1 movs r3, #0x80 bl CreateObjectWithParent adds r1, r0, #0 str r1, [r4, #0x54] cmp r1, #0 beq _08094272 ldr r0, [r4, #0x50] str r0, [r1, #0x54] _08094272: ldrb r0, [r4, #0xb] cmp r0, #0x80 bne _0809427A b _08094380 _0809427A: movs r2, #0 movs r0, #0x4b strb r0, [r4, #0x1e] ldrb r1, [r4, #0x19] subs r0, #0x58 ands r0, r1 movs r1, #4 orrs r0, r1 movs r1, #0xe0 lsls r1, r1, #7 strh r1, [r4, #0x24] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] adds r3, r4, #0 adds r3, #0x29 ldrb r0, [r3] movs r1, #7 orrs r0, r1 strb r0, [r3] ldrb r0, [r4, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x19] ldrb r0, [r4, #0xb] lsls r0, r0, #3 ldr r1, _080942E8 @ =gUnk_081229F0 adds r3, r0, r1 movs r0, #0 ldrsb r0, [r3, r0] ldrh r1, [r4, #0x2e] adds r0, r0, r1 strh r0, [r4, #0x2e] movs r0, #1 ldrsb r0, [r3, r0] ldrh r1, [r4, #0x32] adds r0, r0, r1 strh r0, [r4, #0x32] ldrb r0, [r3, #2] strb r0, [r4, #0xe] ldrb r0, [r3, #3] strb r0, [r4, #0xf] movs r0, #0xce str r0, [r4, #0x7c] str r2, [r4, #0x74] ldrb r1, [r3, #4] movs r0, #0x40 ands r0, r1 cmp r0, #0 beq _080942EC adds r1, r4, #0 adds r1, #0x82 movs r0, #0xff lsls r0, r0, #8 b _080942F4 .align 2, 0 _080942E8: .4byte gUnk_081229F0 _080942EC: adds r1, r4, #0 adds r1, #0x82 movs r0, #0x80 lsls r0, r0, #1 _080942F4: strh r0, [r1] ldrb r1, [r3, #4] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0809430A adds r1, r4, #0 adds r1, #0x86 movs r0, #0xff lsls r0, r0, #8 b _08094312 _0809430A: adds r1, r4, #0 adds r1, #0x86 movs r0, #0x80 lsls r0, r0, #1 _08094312: strh r0, [r1] adds r0, r4, #0 bl sub_0806FBD8 cmp r0, #0 beq _0809438A ldr r2, [r4, #0x48] ldr r1, _0809437C @ =gUnk_080FD2E8 ldrb r0, [r1] strb r0, [r2] ldr r2, [r4, #0x48] ldrb r0, [r1, #1] strb r0, [r2, #1] ldr r2, [r4, #0x48] ldrb r0, [r1, #2] strb r0, [r2, #2] ldr r2, [r4, #0x48] ldrb r0, [r1, #3] strb r0, [r2, #3] ldr r2, [r4, #0x48] ldrb r0, [r1, #4] strb r0, [r2, #4] ldr r2, [r4, #0x48] ldrb r0, [r1, #5] strb r0, [r2, #5] ldr r2, [r4, #0x48] ldrb r0, [r1, #6] strb r0, [r2, #6] ldr r2, [r4, #0x48] ldrb r0, [r1, #7] strb r0, [r2, #7] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r1, #4 movs r0, #7 strb r0, [r1] adds r1, #4 movs r0, #0x48 strb r0, [r1] subs r1, #1 movs r0, #0x7a strb r0, [r1] subs r1, #4 movs r0, #1 strb r0, [r1] b _0809438A .align 2, 0 _0809437C: .4byte gUnk_080FD2E8 _08094380: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] _0809438A: movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_08094398 _08094394: pop {r4, pc} .align 2, 0 thumb_func_start sub_08094398 sub_08094398: @ 0x08094398 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0 beq _080943A8 cmp r0, #1 beq _080943D8 b _08094420 _080943A8: adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 bl sub_0806F69C movs r1, #0x80 lsls r1, r1, #7 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08094420 ldrb r0, [r4, #0xb] cmp r0, #3 bhi _080943D2 adds r0, r4, #0 movs r1, #0xc movs r2, #0 bl CreateFx _080943D2: bl sub_0805E780 b _08094420 _080943D8: ldrb r1, [r4, #0xb] cmp r1, #0x80 beq _0809440A ldr r0, [r4, #0x7c] subs r0, #1 str r0, [r4, #0x7c] movs r1, #1 rsbs r1, r1, #0 cmp r0, r1 bne _080943F6 movs r0, #0x96 lsls r0, r0, #2 str r0, [r4, #0x7c] movs r0, #2 strb r0, [r4, #0xc] _080943F6: adds r0, r4, #0 adds r0, #0x82 ldrh r1, [r0] adds r0, #4 ldrh r2, [r0] adds r0, r4, #0 movs r3, #0 bl sub_0805EC9C b _08094420 _0809440A: ldr r0, [r4, #0x54] adds r0, #0x79 ldrb r0, [r0] ands r1, r0 cmp r1, #0 bne _0809441A bl sub_0805E780 _0809441A: adds r0, r4, #0 bl sub_08094660 _08094420: pop {r4, pc} .align 2, 0 thumb_func_start sub_08094424 sub_08094424: @ 0x08094424 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r6, r0, #0 adds r3, r6, #0 adds r3, #0x82 movs r1, #0 ldrsh r0, [r3, r1] cmp r0, #0 bge _08094452 adds r1, r6, #0 adds r1, #0x80 movs r0, #0x24 ldrsh r2, [r6, r0] ldr r0, [r1] adds r0, r0, r2 str r0, [r1] movs r2, #0 ldrsh r0, [r3, r2] rsbs r0, r0, #0 mov r8, r0 adds r5, r1, #0 b _08094466 _08094452: adds r0, r6, #0 adds r0, #0x80 movs r1, #0x24 ldrsh r2, [r6, r1] ldr r1, [r0] subs r1, r1, r2 str r1, [r0] ldrh r3, [r3] mov r8, r3 adds r5, r0, #0 _08094466: adds r0, r6, #0 adds r0, #0x86 movs r2, #0 ldrsh r1, [r0, r2] adds r4, r0, #0 cmp r1, #0 bge _0809448C adds r1, r6, #0 adds r1, #0x84 movs r0, #0x24 ldrsh r2, [r6, r0] ldr r0, [r1] adds r0, r0, r2 str r0, [r1] movs r2, #0 ldrsh r0, [r4, r2] rsbs r7, r0, #0 adds r3, r1, #0 b _0809449E _0809448C: adds r0, r6, #0 adds r0, #0x84 movs r1, #0x24 ldrsh r2, [r6, r1] ldr r1, [r0] subs r1, r1, r2 str r1, [r0] ldrh r7, [r4] adds r3, r0, #0 _0809449E: ldrh r2, [r6, #0x24] movs r0, #0x24 ldrsh r1, [r6, r0] movs r0, #0x80 lsls r0, r0, #6 cmp r1, r0 ble _080944B2 ldr r1, _080944D0 @ =0xFFFFFF00 adds r0, r2, r1 strh r0, [r6, #0x24] _080944B2: ldr r0, [r6, #0x7c] subs r0, #1 str r0, [r6, #0x7c] movs r1, #1 rsbs r1, r1, #0 cmp r0, r1 bne _080944D4 movs r0, #0 strh r0, [r5] strh r0, [r3] movs r0, #3 strb r0, [r6, #0xc] movs r0, #0x78 str r0, [r6, #0x7c] b _08094500 .align 2, 0 _080944D0: .4byte 0xFFFFFF00 _080944D4: adds r5, r6, #0 adds r5, #0x82 movs r2, #0 ldrsh r1, [r5, r2] ldrb r3, [r6, #0xe] adds r0, r6, #0 movs r2, #0x20 bl sub_0806FCF4 movs r0, #0 ldrsh r1, [r4, r0] ldrb r3, [r6, #0xf] adds r0, r6, #0 movs r2, #0x20 bl sub_0806FCF4 ldrh r1, [r5] ldrh r2, [r4] adds r0, r6, #0 movs r3, #0 bl sub_0805EC9C _08094500: ldr r5, [r6, #0x48] cmp r5, #0 beq _08094538 movs r4, #0x80 lsls r4, r4, #9 adds r0, r4, #0 mov r1, r8 bl __divsi3 lsrs r0, r0, #3 strb r0, [r5, #6] ldr r5, [r6, #0x48] adds r0, r4, #0 adds r1, r7, #0 bl __divsi3 lsrs r0, r0, #3 strb r0, [r5, #7] ldr r1, [r6, #0x48] adds r0, r6, #0 adds r0, #0x62 ldrb r0, [r0] strb r0, [r1] ldr r1, [r6, #0x48] adds r0, r6, #0 adds r0, #0x63 ldrb r0, [r0] strb r0, [r1, #1] _08094538: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08094540 sub_08094540: @ 0x08094540 push {lr} adds r3, r0, #0 ldr r0, [r3, #0x7c] subs r0, #1 str r0, [r3, #0x7c] movs r1, #1 rsbs r1, r1, #0 cmp r0, r1 bne _0809455A movs r0, #4 strb r0, [r3, #0xc] movs r0, #2 str r0, [r3, #0x7c] _0809455A: adds r0, r3, #0 adds r0, #0x82 ldrh r1, [r0] adds r0, #4 ldrh r2, [r0] adds r0, r3, #0 movs r3, #0 bl sub_0805EC9C pop {pc} .align 2, 0 thumb_func_start sub_08094570 sub_08094570: @ 0x08094570 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r6, r0, #0 adds r2, r6, #0 adds r2, #0x82 ldrh r1, [r2] lsls r3, r1, #0x10 movs r0, #0x80 lsls r0, r0, #1 cmp r1, r0 beq _08094590 asrs r3, r3, #0x10 ldr r0, _080945B0 @ =0xFFFFFF00 cmp r3, r0 bne _080945BA _08094590: ldr r1, [r6, #0x7c] cmp r1, #0 bne _080945B4 ldr r0, [r6, #0x50] adds r0, #0x7c strh r1, [r0] ldr r0, [r6, #0x50] adds r0, #0x79 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _08094622 bl sub_0805E780 b _08094622 .align 2, 0 _080945B0: .4byte 0xFFFFFF00 _080945B4: subs r0, r1, #1 str r0, [r6, #0x7c] b _08094622 _080945BA: cmp r3, #0 bge _080945CC subs r0, r1, #1 strh r0, [r2] movs r1, #0 ldrsh r0, [r2, r1] rsbs r0, r0, #0 mov r8, r0 b _080945D4 _080945CC: adds r0, r1, #1 strh r0, [r2] ldrh r2, [r2] mov r8, r2 _080945D4: adds r0, r6, #0 adds r0, #0x86 ldrh r2, [r0] movs r3, #0 ldrsh r1, [r0, r3] adds r4, r0, #0 cmp r1, #0 bge _080945F0 subs r0, r2, #1 strh r0, [r4] movs r1, #0 ldrsh r0, [r4, r1] rsbs r7, r0, #0 b _080945F6 _080945F0: adds r0, r2, #1 strh r0, [r4] ldrh r7, [r4] _080945F6: adds r5, r6, #0 adds r5, #0x82 movs r3, #0 ldrsh r1, [r5, r3] ldrb r3, [r6, #0xe] adds r0, r6, #0 movs r2, #0x20 bl sub_0806FCF4 movs r0, #0 ldrsh r1, [r4, r0] ldrb r3, [r6, #0xf] adds r0, r6, #0 movs r2, #0x20 bl sub_0806FCF4 ldrh r1, [r5] ldrh r2, [r4] adds r0, r6, #0 movs r3, #0 bl sub_0805EC9C _08094622: ldr r5, [r6, #0x48] cmp r5, #0 beq _0809465A movs r4, #0x80 lsls r4, r4, #9 adds r0, r4, #0 mov r1, r8 bl __divsi3 lsrs r0, r0, #3 strb r0, [r5, #6] ldr r5, [r6, #0x48] adds r0, r4, #0 adds r1, r7, #0 bl __divsi3 lsrs r0, r0, #3 strb r0, [r5, #7] ldr r1, [r6, #0x48] adds r0, r6, #0 adds r0, #0x62 ldrb r0, [r0] strb r0, [r1] ldr r1, [r6, #0x48] adds r0, r6, #0 adds r0, #0x63 ldrb r0, [r0] strb r0, [r1, #1] _0809465A: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08094660 sub_08094660: @ 0x08094660 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} adds r6, r0, #0 ldr r0, [r6, #0x50] adds r0, #0x62 movs r7, #0 ldrsb r7, [r0, r7] cmp r7, #0 bge _08094678 rsbs r7, r7, #0 _08094678: lsls r7, r7, #1 adds r0, r7, #0 cmp r7, #0 bge _08094682 adds r0, #0xf _08094682: asrs r1, r0, #4 ldr r0, [r6, #0x74] cmp r0, r1 bhs _08094700 str r1, [r6, #0x74] movs r1, #0x2e ldrsh r0, [r6, r1] subs r0, r0, r7 adds r4, r0, #0 subs r4, #0x40 movs r1, #0x32 ldrsh r0, [r6, r1] subs r0, r0, r7 adds r5, r0, #0 subs r5, #0x40 movs r0, #0x10 mov sb, r0 str r0, [r6, #0x78] movs r1, #0 mov r8, r1 str r1, [r6, #0x7c] adds r0, r6, #0 adds r1, r4, #0 adds r2, r5, #0 bl sub_08094708 mov r0, r8 str r0, [r6, #0x78] mov r1, sb str r1, [r6, #0x7c] adds r0, r6, #0 adds r1, r4, #0 adds r2, r5, #0 bl sub_08094708 movs r1, #0x2e ldrsh r0, [r6, r1] adds r0, r0, r7 adds r4, r0, #0 adds r4, #0x30 movs r1, #0x32 ldrsh r0, [r6, r1] adds r0, r0, r7 adds r5, r0, #0 adds r5, #0x30 movs r7, #0x10 rsbs r7, r7, #0 str r7, [r6, #0x78] mov r0, r8 str r0, [r6, #0x7c] adds r0, r6, #0 adds r1, r4, #0 adds r2, r5, #0 bl sub_08094708 mov r1, r8 str r1, [r6, #0x78] str r7, [r6, #0x7c] adds r0, r6, #0 adds r1, r4, #0 adds r2, r5, #0 bl sub_08094708 _08094700: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} thumb_func_start sub_08094708 sub_08094708: @ 0x08094708 push {r4, r5, r6, r7, lr} sub sp, #8 adds r7, r0, #0 adds r6, r1, #0 adds r5, r2, #0 ldr r0, [r7, #0x74] lsls r0, r0, #1 adds r4, r0, #0 adds r4, #8 cmp r4, #0 beq _08094752 ldr r3, _08094758 @ =gRoomControls movs r2, #0x3f _08094722: ldrh r0, [r3, #6] subs r0, r6, r0 lsrs r0, r0, #4 ands r0, r2 ldrh r1, [r3, #8] subs r1, r5, r1 lsrs r1, r1, #4 ands r1, r2 lsls r1, r1, #6 orrs r0, r1 movs r1, #2 str r2, [sp] str r3, [sp, #4] bl sub_0807BA8C ldr r0, [r7, #0x78] adds r6, r6, r0 ldr r0, [r7, #0x7c] adds r5, r5, r0 subs r4, #1 ldr r2, [sp] ldr r3, [sp, #4] cmp r4, #0 bne _08094722 _08094752: add sp, #8 pop {r4, r5, r6, r7, pc} .align 2, 0 _08094758: .4byte gRoomControls thumb_func_start sub_0809475C sub_0809475C: @ 0x0809475C push {lr} ldr r2, _08094770 @ =gUnk_08122A10 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08094770: .4byte gUnk_08122A10 thumb_func_start sub_08094774 sub_08094774: @ 0x08094774 push {r4, r5, r6, lr} adds r5, r0, #0 movs r0, #1 strb r0, [r5, #0xc] ldrb r0, [r5, #0xa] cmp r0, #8 bls _08094784 b _080948C6 _08094784: lsls r0, r0, #2 ldr r1, _08094790 @ =_08094794 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08094790: .4byte _08094794 _08094794: @ jump table .4byte _080947B8 @ case 0 .4byte _08094824 @ case 1 .4byte _080948B0 @ case 2 .4byte _080948C6 @ case 3 .4byte _080948C6 @ case 4 .4byte _080948C6 @ case 5 .4byte _080948C6 @ case 6 .4byte _080948C6 @ case 7 .4byte _080948C6 @ case 8 _080947B8: adds r0, r5, #0 movs r1, #0xb movs r2, #0 bl CreateFx adds r6, r0, #0 str r6, [r5, #0x54] cmp r6, #0 beq _080947EE ldr r0, _0809480C @ =gLinkEntity ldr r4, _08094810 @ =gUnk_08122A18 ldrb r3, [r0, #0x14] movs r1, #6 ands r1, r3 adds r1, r1, r4 movs r2, #0 ldrsb r2, [r1, r2] lsls r2, r2, #0x10 movs r1, #1 orrs r1, r3 adds r1, r1, r4 movs r3, #0 ldrsb r3, [r1, r3] lsls r3, r3, #0x10 adds r1, r6, #0 bl PositionRelative _080947EE: ldr r0, [r5, #0x54] adds r1, r5, #0 bl CopyPosition ldr r1, _08094814 @ =0x00004032 ldr r2, _08094818 @ =0x00004033 adds r0, r5, #0 bl sub_08094980 ldr r1, _0809481C @ =0x00004061 ldr r2, _08094820 @ =0x00004022 adds r0, r5, #0 bl sub_08094980 b _080948C6 .align 2, 0 _0809480C: .4byte gLinkEntity _08094810: .4byte gUnk_08122A18 _08094814: .4byte 0x00004032 _08094818: .4byte 0x00004033 _0809481C: .4byte 0x00004061 _08094820: .4byte 0x00004022 _08094824: adds r0, r5, #0 movs r1, #0x2b movs r2, #0 bl CreateFx adds r6, r0, #0 str r6, [r5, #0x54] cmp r6, #0 beq _0809485A ldr r0, _08094898 @ =gLinkEntity ldr r4, _0809489C @ =gUnk_08122A18 ldrb r3, [r0, #0x14] movs r1, #6 ands r1, r3 adds r1, r1, r4 movs r2, #0 ldrsb r2, [r1, r2] lsls r2, r2, #0x10 movs r1, #1 orrs r1, r3 adds r1, r1, r4 movs r3, #0 ldrsb r3, [r1, r3] lsls r3, r3, #0x10 adds r1, r6, #0 bl PositionRelative _0809485A: ldrb r4, [r5, #0xb] cmp r4, #0 bne _080948C6 ldr r0, [r5, #0x54] adds r1, r5, #0 bl CopyPosition strb r4, [r5, #0xe] adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] ldrb r1, [r5, #0x19] movs r0, #0x3f ands r0, r1 strb r0, [r5, #0x19] ldr r1, _080948A0 @ =0x0000403B ldr r2, _080948A4 @ =0x0000403C adds r0, r5, #0 bl sub_08094980 ldr r1, _080948A8 @ =0x00004061 ldr r2, _080948AC @ =0x00004022 adds r0, r5, #0 bl sub_08094980 b _080948CA .align 2, 0 _08094898: .4byte gLinkEntity _0809489C: .4byte gUnk_08122A18 _080948A0: .4byte 0x0000403B _080948A4: .4byte 0x0000403C _080948A8: .4byte 0x00004061 _080948AC: .4byte 0x00004022 _080948B0: ldr r0, _080948CC @ =gLinkEntity movs r1, #0x60 movs r2, #0 bl sub_080A2A20 adds r1, r0, #0 str r1, [r5, #0x54] cmp r1, #0 beq _080948C6 movs r0, #1 strb r0, [r1, #0xe] _080948C6: bl sub_0805E780 _080948CA: pop {r4, r5, r6, pc} .align 2, 0 _080948CC: .4byte gLinkEntity thumb_func_start sub_080948D0 sub_080948D0: @ 0x080948D0 push {lr} ldr r2, _080948E4 @ =gUnk_08122A20 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080948E4: .4byte gUnk_08122A20 thumb_func_start sub_080948E8 sub_080948E8: @ 0x080948E8 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0xe] cmp r1, #0x3b bhi _08094978 ldr r0, [r4, #0x34] ldr r2, _0809495C @ =0xFFFFC000 adds r0, r0, r2 str r0, [r4, #0x34] movs r0, #3 ands r0, r1 cmp r0, #0 bne _08094970 adds r0, r4, #0 movs r1, #0x11 movs r2, #0x40 bl CreateFx adds r3, r0, #0 str r3, [r4, #0x54] cmp r3, #0 beq _08094970 ldrb r1, [r4, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r2, [r3, #0x19] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r3, #0x19] ldr r2, [r4, #0x54] adds r0, r4, #0 adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d adds r2, #0x29 lsrs r1, r1, #0x1d ldrb r3, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r3 orrs r0, r1 strb r0, [r2] bl Random movs r1, #1 ands r1, r0 cmp r1, #0 beq _08094960 bl Random ldr r2, [r4, #0x54] movs r1, #0xf ands r0, r1 ldrh r1, [r2, #0x2e] adds r0, r0, r1 strh r0, [r2, #0x2e] b _08094970 .align 2, 0 _0809495C: .4byte 0xFFFFC000 _08094960: bl Random ldr r2, [r4, #0x54] movs r1, #0xf ands r0, r1 ldrh r1, [r2, #0x2e] subs r1, r1, r0 strh r1, [r2, #0x2e] _08094970: ldrb r0, [r4, #0xe] adds r0, #1 strb r0, [r4, #0xe] b _0809497C _08094978: bl sub_0805E780 _0809497C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08094980 sub_08094980: @ 0x08094980 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} sub sp, #8 adds r6, r0, #0 str r1, [sp] str r2, [sp, #4] movs r0, #0 mov r8, r0 ldr r1, _08094A04 @ =gRoomControls mov sl, r1 movs r2, #0x3f mov sb, r2 ldr r7, _08094A08 @ =gUnk_08122A28 _080949A0: movs r4, #0 ldrsb r4, [r7, r4] movs r5, #1 ldrsb r5, [r7, r5] adds r0, r6, #0 adds r1, r4, #0 adds r2, r5, #0 bl sub_0800029C ldr r3, [sp] cmp r3, r0 bne _080949EC movs r0, #0x2e ldrsh r1, [r6, r0] adds r1, r1, r4 mov r2, sl ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 mov r3, sb ands r1, r3 movs r2, #0x32 ldrsh r0, [r6, r2] adds r0, r0, r5 mov r3, sl ldrh r2, [r3, #8] subs r0, r0, r2 asrs r0, r0, #4 mov r2, sb ands r0, r2 lsls r0, r0, #6 orrs r1, r0 adds r0, r6, #0 adds r0, #0x38 ldrb r2, [r0] ldr r0, [sp, #4] bl UpdateCollisionLayer _080949EC: adds r7, #2 movs r3, #2 add r8, r3 mov r0, r8 cmp r0, #9 bls _080949A0 add sp, #8 pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 _08094A04: .4byte gRoomControls _08094A08: .4byte gUnk_08122A28 thumb_func_start sub_08094A0C sub_08094A0C: @ 0x08094A0C push {lr} adds r2, r0, #0 ldrb r1, [r2, #0x10] movs r0, #2 ands r0, r1 cmp r0, #0 beq _08094A3E ldrb r0, [r2, #0xc] cmp r0, #0 bne _08094A34 movs r0, #1 strb r0, [r2, #0xc] ldr r0, _08094A30 @ =gUnk_080FD170 str r0, [r2, #0x48] adds r0, r2, #0 bl sub_0807DD50 b _08094A42 .align 2, 0 _08094A30: .4byte gUnk_080FD170 _08094A34: adds r0, r2, #0 movs r1, #0 bl sub_0807DD94 b _08094A42 _08094A3E: movs r0, #1 strb r0, [r2, #0xc] _08094A42: pop {pc} thumb_func_start sub_08094A44 sub_08094A44: @ 0x08094A44 push {lr} ldr r2, _08094A58 @ =gUnk_08122A34 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08094A58: .4byte gUnk_08122A34 thumb_func_start sub_08094A5C sub_08094A5C: @ 0x08094A5C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08094A78 adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0807DD64 adds r0, r4, #0 movs r1, #4 bl UpdateSprite _08094A78: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_08004274 pop {r4, pc} .align 2, 0 thumb_func_start sub_08094A90 sub_08094A90: @ 0x08094A90 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08094ACE adds r0, #1 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip ldr r1, _08094AE4 @ =gUnk_08114F30 ldrb r2, [r4, #0x19] lsrs r0, r2, #6 adds r0, r0, r1 ldrb r1, [r0] lsls r1, r1, #6 movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 movs r1, #0 bl LoadAnimation adds r0, r4, #0 bl sub_0807DD64 _08094ACE: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_080042B8 pop {r4, pc} .align 2, 0 _08094AE4: .4byte gUnk_08114F30 thumb_func_start sub_08094AE8 sub_08094AE8: @ 0x08094AE8 push {r4, r5, lr} adds r5, r1, #0 movs r0, #0x6a movs r1, #1 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08094B08 ldr r1, [r5, #4] bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _08094B08: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08094B0C sub_08094B0C: @ 0x08094B0C push {lr} adds r2, r0, #0 ldrh r0, [r2, #0x36] subs r0, #1 movs r3, #0 strh r0, [r2, #0x36] lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r1, #0x20 rsbs r1, r1, #0 cmp r0, r1 bgt _08094B30 ldr r0, _08094B2C @ =0x0000FFE0 strh r0, [r2, #0x36] b _08094B34 .align 2, 0 _08094B2C: .4byte 0x0000FFE0 _08094B30: ldr r0, _08094B38 @ =gUnk_02033280 strb r3, [r0, #6] _08094B34: pop {pc} .align 2, 0 _08094B38: .4byte gUnk_02033280 thumb_func_start sub_08094B3C sub_08094B3C: @ 0x08094B3C push {lr} adds r2, r0, #0 ldr r0, [r2, #0x34] movs r1, #0x80 lsls r1, r1, #8 adds r0, r0, r1 str r0, [r2, #0x34] movs r0, #0x36 ldrsh r1, [r2, r0] movs r0, #0xd rsbs r0, r0, #0 cmp r1, r0 blt _08094B60 ldr r0, _08094B5C @ =0x0000FFF3 strh r0, [r2, #0x36] b _08094B66 .align 2, 0 _08094B5C: .4byte 0x0000FFF3 _08094B60: ldr r1, _08094B68 @ =gUnk_02033280 movs r0, #0 strb r0, [r1, #6] _08094B66: pop {pc} .align 2, 0 _08094B68: .4byte gUnk_02033280 thumb_func_start sub_08094B6C sub_08094B6C: @ 0x08094B6C adds r0, #0x29 ldrb r2, [r0] movs r1, #0x39 rsbs r1, r1, #0 ands r1, r2 movs r2, #0x18 orrs r1, r2 strb r1, [r0] bx lr .align 2, 0 thumb_func_start sub_08094B80 sub_08094B80: @ 0x08094B80 adds r0, #0x29 ldrb r2, [r0] movs r1, #0x39 rsbs r1, r1, #0 ands r1, r2 movs r2, #0x10 orrs r1, r2 strb r1, [r0] bx lr .align 2, 0 thumb_func_start sub_08094B94 sub_08094B94: @ 0x08094B94 push {r4, lr} movs r0, #0x6a movs r1, #0x22 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08094BD2 ldr r0, _08094BD4 @ =gLinkEntity adds r1, r4, #0 bl CopyPosition ldr r0, _08094BD8 @ =0x0000FFD0 strh r0, [r4, #0x36] ldr r1, _08094BDC @ =gUnk_0800AEDC adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] adds r0, r4, #0 bl sub_080A29BC ldrh r0, [r4, #0x36] adds r0, #0x10 strh r0, [r4, #0x36] ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] _08094BD2: pop {r4, pc} .align 2, 0 _08094BD4: .4byte gLinkEntity _08094BD8: .4byte 0x0000FFD0 _08094BDC: .4byte gUnk_0800AEDC thumb_func_start sub_08094BE0 sub_08094BE0: @ 0x08094BE0 push {r4, lr} sub sp, #4 movs r0, #0 str r0, [sp] movs r0, #6 movs r1, #0x6a movs r2, #6 movs r3, #0x22 bl sub_0805EB2C adds r4, r0, #0 cmp r4, #0 beq _08094C22 ldr r0, _08094C28 @ =gLinkEntity adds r1, r4, #0 bl CopyPosition ldr r0, _08094C2C @ =0x0000FFF4 strh r0, [r4, #0x36] ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r0, r4, #0 movs r1, #1 bl LoadAnimation _08094C22: add sp, #4 pop {r4, pc} .align 2, 0 _08094C28: .4byte gLinkEntity _08094C2C: .4byte 0x0000FFF4 thumb_func_start sub_08094C30 sub_08094C30: @ 0x08094C30 push {r4, r5, lr} adds r4, r0, #0 ldr r5, [r4, #0x50] cmp r5, #0 beq _08094C40 ldr r0, [r5, #4] cmp r0, #0 bne _08094C44 _08094C40: bl sub_0805E780 _08094C44: ldrb r0, [r4, #0xc] cmp r0, #0 bne _08094C74 adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #2 bl sub_0805E3A0 ldr r1, _08094C84 @ =gUnk_08114F30 ldrb r0, [r5, #0x19] lsrs r0, r0, #6 adds r0, r0, r1 ldrb r1, [r0] lsls r1, r1, #6 ldrb r2, [r4, #0x19] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 movs r1, #1 bl LoadAnimation _08094C74: adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition adds r0, r4, #0 bl sub_080042B8 pop {r4, r5, pc} .align 2, 0 _08094C84: .4byte gUnk_08114F30 thumb_func_start sub_08094C88 sub_08094C88: @ 0x08094C88 push {r4, r5, lr} adds r5, r0, #0 ldrb r1, [r5, #0xc] cmp r1, #0 beq _08094CA0 movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08094CCC bl sub_0805E780 b _08094CDA _08094CA0: adds r0, r1, #1 strb r0, [r5, #0xc] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] adds r0, r5, #0 movs r1, #3 bl sub_0805E3A0 ldrb r0, [r5, #0xb] cmp r0, #0x43 bgt _08094CCC cmp r0, #0x40 blt _08094CCC adds r0, r5, #0 adds r1, r5, #0 bl sub_0806FAD8 _08094CCC: ldrb r4, [r5, #0xa] ldrb r0, [r5, #0xb] strb r0, [r5, #0xa] adds r0, r5, #0 bl sub_08080CB4 strb r4, [r5, #0xa] _08094CDA: pop {r4, r5, pc} thumb_func_start sub_08094CDC sub_08094CDC: @ 0x08094CDC push {lr} movs r0, #0x6a movs r1, #3 movs r2, #0x62 bl CreateObject adds r2, r0, #0 cmp r2, #0 beq _08094D0A ldr r1, _08094D0C @ =gRoomControls ldrh r0, [r1, #6] adds r0, #0xe0 strh r0, [r2, #0x2e] movs r3, #0x96 lsls r3, r3, #2 adds r0, r3, #0 ldrh r1, [r1, #8] adds r0, r0, r1 strh r0, [r2, #0x32] movs r0, #0xa2 lsls r0, r0, #1 bl PlaySFX _08094D0A: pop {pc} .align 2, 0 _08094D0C: .4byte gRoomControls thumb_func_start sub_08094D10 sub_08094D10: @ 0x08094D10 push {lr} sub sp, #4 movs r0, #0x62 str r0, [sp] movs r0, #6 movs r1, #0x6a movs r2, #6 movs r3, #3 bl sub_0805EB2C adds r1, r0, #0 cmp r1, #0 beq _08094D2E movs r0, #0xff strb r0, [r1, #0xc] _08094D2E: add sp, #4 pop {pc} .align 2, 0 thumb_func_start sub_08094D34 sub_08094D34: @ 0x08094D34 push {lr} movs r0, #0x6a movs r1, #0x15 movs r2, #0xd bl CreateObject adds r2, r0, #0 cmp r2, #0 beq _08094D68 ldr r1, _08094D6C @ =gRoomControls movs r3, #0x80 lsls r3, r3, #1 adds r0, r3, #0 ldrh r3, [r1, #6] adds r0, r0, r3 strh r0, [r2, #0x2e] movs r3, #0x96 lsls r3, r3, #2 adds r0, r3, #0 ldrh r1, [r1, #8] adds r0, r0, r1 strh r0, [r2, #0x32] movs r0, #0xa2 lsls r0, r0, #1 bl PlaySFX _08094D68: pop {pc} .align 2, 0 _08094D6C: .4byte gRoomControls thumb_func_start sub_08094D70 sub_08094D70: @ 0x08094D70 push {lr} sub sp, #4 movs r0, #0xd str r0, [sp] movs r0, #6 movs r1, #0x6a movs r2, #6 movs r3, #0x15 bl sub_0805EB2C adds r1, r0, #0 cmp r1, #0 beq _08094D8E movs r0, #0xff strb r0, [r1, #0xc] _08094D8E: add sp, #4 pop {pc} .align 2, 0 thumb_func_start sub_08094D94 sub_08094D94: @ 0x08094D94 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0xc] cmp r1, #0 beq _08094DAC movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08094DCE bl sub_0805E780 b _08094DD4 _08094DAC: adds r0, r1, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #3 bl sub_0805E3A0 adds r0, r4, #0 movs r1, #0 bl LoadAnimation _08094DCE: adds r0, r4, #0 bl sub_080042B8 _08094DD4: pop {r4, pc} .align 2, 0 thumb_func_start sub_08094DD8 sub_08094DD8: @ 0x08094DD8 push {lr} movs r0, #0x6a movs r1, #4 movs r2, #0 bl CreateObject adds r2, r0, #0 cmp r2, #0 beq _08094E06 ldr r1, _08094E08 @ =gRoomControls ldrh r0, [r1, #6] adds r0, #0xf0 strh r0, [r2, #0x2e] movs r3, #0x96 lsls r3, r3, #2 adds r0, r3, #0 ldrh r1, [r1, #8] adds r0, r0, r1 strh r0, [r2, #0x32] movs r0, #0xa2 lsls r0, r0, #1 bl PlaySFX _08094E06: pop {pc} .align 2, 0 _08094E08: .4byte gRoomControls thumb_func_start sub_08094E0C sub_08094E0C: @ 0x08094E0C push {lr} sub sp, #4 movs r0, #0 str r0, [sp] movs r0, #6 movs r1, #0x6a movs r2, #6 movs r3, #4 bl sub_0805EB2C adds r1, r0, #0 cmp r1, #0 beq _08094E2A movs r0, #0xff strb r0, [r1, #0xc] _08094E2A: add sp, #4 pop {pc} .align 2, 0 thumb_func_start sub_08094E30 sub_08094E30: @ 0x08094E30 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #0 bne _08094E88 ldr r0, _08094E80 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #0x1f ands r0, r1 cmp r0, #0 beq _08094E48 b _08094F94 _08094E48: movs r0, #0x6a movs r1, #5 movs r2, #1 bl CreateObject adds r5, r0, #0 cmp r5, #0 bne _08094E5A b _08094F94 _08094E5A: bl Random ldr r4, _08094E84 @ =gRoomControls movs r1, #0xf0 bl __modsi3 ldrh r1, [r4, #0xa] adds r1, r1, r0 strh r1, [r5, #0x2e] bl Random movs r1, #0xa0 bl __modsi3 ldrh r1, [r4, #0xc] adds r1, r1, r0 strh r1, [r5, #0x32] b _08094F94 .align 2, 0 _08094E80: .4byte gUnk_030010A0 _08094E84: .4byte gRoomControls _08094E88: cmp r0, #1 bne _08094F44 ldrb r1, [r4, #0xc] cmp r1, #1 beq _08094ED4 cmp r1, #1 bgt _08094E9C cmp r1, #0 beq _08094EA6 b _08094F94 _08094E9C: cmp r1, #2 beq _08094F08 cmp r1, #3 beq _08094F22 b _08094F94 _08094EA6: strb r0, [r4, #0xc] ldr r0, _08094ED0 @ =0xFF600000 str r0, [r4, #0x34] str r1, [r4, #0x20] adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 adds r0, r4, #0 movs r1, #0 bl UpdateSprite adds r0, r4, #0 bl sub_080002B8 cmp r0, #0xd bne _08094F94 movs r0, #3 strb r0, [r4, #0xc] b _08094F94 .align 2, 0 _08094ED0: .4byte 0xFF600000 _08094ED4: ldr r1, [r4, #0x34] ldr r0, [r4, #0x20] subs r1, r1, r0 str r1, [r4, #0x34] ldr r2, _08094F04 @ =0xFFFFE000 adds r0, r0, r2 str r0, [r4, #0x20] cmp r1, #0 ble _08094F94 ldrb r0, [r4, #0xc] adds r0, #1 movs r1, #0 strb r0, [r4, #0xc] str r1, [r4, #0x34] str r1, [r4, #0x20] adds r0, r4, #0 movs r1, #1 bl UpdateSprite movs r0, #0xbf lsls r0, r0, #1 bl sub_08004488 b _08094F94 .align 2, 0 _08094F04: .4byte 0xFFFFE000 _08094F08: adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08094F94 bl sub_0805E780 b _08094F94 _08094F22: ldr r0, [r4, #0x34] ldr r1, [r4, #0x20] subs r0, r0, r1 str r0, [r4, #0x34] ldr r0, _08094F40 @ =0xFFFFE000 adds r1, r1, r0 str r1, [r4, #0x20] adds r0, r4, #0 bl sub_080040A8 cmp r0, #0 bne _08094F94 bl sub_0805E780 b _08094F94 .align 2, 0 _08094F40: .4byte 0xFFFFE000 _08094F44: ldrb r0, [r4, #0xc] cmp r0, #0 bne _08094F94 adds r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4, #0xe] cmp r0, #1 beq _08094F68 cmp r0, #1 bgt _08094F5E cmp r0, #0 beq _08094F7A b _08094F94 _08094F5E: cmp r0, #2 beq _08094F72 cmp r0, #3 beq _08094F84 b _08094F94 _08094F68: adds r0, r4, #0 movs r1, #2 bl UpdateSprite b _08094F94 _08094F72: ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x18] _08094F7A: adds r0, r4, #0 movs r1, #0 bl UpdateSprite b _08094F94 _08094F84: ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #2 bl UpdateSprite _08094F94: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08094F98 sub_08094F98: @ 0x08094F98 push {lr} movs r0, #0x6a movs r1, #5 movs r2, #0 bl CreateObject pop {pc} .align 2, 0 thumb_func_start sub_08094FA8 sub_08094FA8: @ 0x08094FA8 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #4 bhi _08095086 lsls r0, r0, #2 ldr r1, _08094FBC @ =_08094FC0 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08094FBC: .4byte _08094FC0 _08094FC0: @ jump table .4byte _08094FD4 @ case 0 .4byte _08094FF0 @ case 1 .4byte _08095024 @ case 2 .4byte _08095040 @ case 3 .4byte _08095070 @ case 4 _08094FD4: movs r1, #0 movs r0, #1 strb r0, [r4, #0xc] strb r1, [r4, #0x1e] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 bl sub_080787B4 b _08095086 _08094FF0: adds r1, r4, #0 adds r1, #0x39 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 beq _08095086 movs r0, #0 strb r0, [r1] movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_080788E0 ldr r0, _08095020 @ =gLinkState movs r1, #0xc strb r1, [r0, #0xc] adds r0, #0x38 movs r1, #0x36 strb r1, [r0] movs r0, #2 bl sub_08078A90 b _08095086 .align 2, 0 _08095020: .4byte gLinkState _08095024: movs r0, #0x36 bl GetInventoryValue cmp r0, #2 bne _08095086 movs r0, #3 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #7 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] b _08095086 _08095040: ldr r0, _0809506C @ =gLinkEntity ldrb r0, [r0, #0xc] cmp r0, #0xc beq _08095086 movs r0, #4 strb r0, [r4, #0xc] movs r0, #0x5b bl GetProgressFlag cmp r0, #0 bne _08095086 movs r0, #0x1c movs r1, #0 movs r2, #0 bl sub_080A7C00 movs r0, #0x5b bl sub_0807CD04 movs r0, #0x3c strb r0, [r4, #0xe] b _08095086 .align 2, 0 _0809506C: .4byte gLinkEntity _08095070: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08095086 movs r0, #5 strb r0, [r4, #0xc] movs r0, #1 bl sub_08078A90 _08095086: pop {r4, pc} thumb_func_start sub_08095088 sub_08095088: @ 0x08095088 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xc] cmp r0, #1 beq _080950C8 cmp r0, #1 bgt _0809509C cmp r0, #0 beq _080950A2 b _0809510A _0809509C: cmp r0, #2 beq _080950F0 b _0809510A _080950A2: movs r0, #0x5b bl GetInventoryValue cmp r0, #0 beq _080950B0 bl sub_0805E780 _080950B0: movs r0, #1 strb r0, [r5, #0xc] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] adds r0, r5, #0 bl sub_080787B4 b _0809510A _080950C8: adds r1, r5, #0 adds r1, #0x39 movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 beq _0809510A movs r0, #0 strb r0, [r1] movs r0, #2 strb r0, [r5, #0xc] adds r0, r5, #0 bl sub_080788E0 ldr r0, _080950EC @ =0x00001F1F movs r1, #0 bl sub_08078AA8 b _0809510A .align 2, 0 _080950EC: .4byte 0x00001F1F _080950F0: ldr r0, _0809511C @ =gTextBox ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 bne _0809510A movs r0, #0x5b movs r1, #0 movs r2, #0 bl sub_080A7C00 bl sub_0805E780 _0809510A: ldrb r4, [r5, #0xa] movs r0, #0x5b strb r0, [r5, #0xa] adds r0, r5, #0 bl sub_08080CB4 strb r4, [r5, #0xa] pop {r4, r5, pc} .align 2, 0 _0809511C: .4byte gTextBox thumb_func_start sub_08095120 sub_08095120: @ 0x08095120 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0809514C movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #3 bl sub_0805E3A0 adds r0, r4, #0 adds r1, r4, #0 bl sub_0806FAD8 adds r0, r4, #0 bl sub_0807DD64 adds r0, r4, #0 movs r1, #2 bl LoadAnimation _0809514C: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_080042B8 pop {r4, pc} .align 2, 0 thumb_func_start sub_08095164 sub_08095164: @ 0x08095164 push {lr} sub sp, #4 movs r0, #0 str r0, [sp] movs r0, #6 movs r1, #0x6a movs r2, #6 movs r3, #8 bl sub_0805EB2C cmp r0, #0 beq _08095182 movs r1, #3 bl LoadAnimation _08095182: add sp, #4 pop {pc} .align 2, 0 thumb_func_start sub_08095188 sub_08095188: @ 0x08095188 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _080951B4 movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #3 bl sub_0805E3A0 adds r0, r4, #0 adds r1, r4, #0 bl sub_0806FAD8 adds r0, r4, #0 bl sub_0807DD64 adds r0, r4, #0 movs r1, #0 bl LoadAnimation _080951B4: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 pop {r4, pc} thumb_func_start sub_080951C4 sub_080951C4: @ 0x080951C4 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _080951E8 adds r0, #1 strb r0, [r4, #0xc] movs r1, #0 ldr r0, _08095240 @ =0x0000FFF0 strh r0, [r4, #0x36] strb r1, [r4, #0xe] adds r0, r4, #0 bl sub_0807DD64 adds r0, r4, #0 movs r1, #3 bl UpdateSprite _080951E8: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_08004274 movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _08095218 str r0, [r4, #0x34] str r0, [r4, #0x50] ldrb r0, [r4, #0xe] cmp r0, #0 bne _08095218 adds r0, #1 strb r0, [r4, #0xe] movs r0, #0xe6 bl PlaySFX _08095218: ldr r3, [r4, #0x50] cmp r3, #0 beq _0809523C ldrb r1, [r3, #0x18] lsls r1, r1, #0x1e lsrs r1, r1, #0x1e ldrb r2, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] ldrh r0, [r3, #0x2e] adds r0, #0x10 strh r0, [r4, #0x2e] ldrh r0, [r3, #0x32] subs r0, #0x10 strh r0, [r4, #0x32] _0809523C: pop {r4, pc} .align 2, 0 _08095240: .4byte 0x0000FFF0 thumb_func_start sub_08095244 sub_08095244: @ 0x08095244 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xa] cmp r0, #0 bne _0809527C movs r0, #0x6a movs r1, #0xa movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _0809527C str r5, [r4, #0x50] movs r2, #0x80 lsls r2, r2, #0xd ldr r3, _08095280 @ =0xFFF00000 adds r0, r5, #0 adds r1, r4, #0 bl PositionRelative ldr r1, _08095284 @ =gUnk_0801183C adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _0809527C: pop {r4, r5, pc} .align 2, 0 _08095280: .4byte 0xFFF00000 _08095284: .4byte gUnk_0801183C thumb_func_start sub_08095288 sub_08095288: @ 0x08095288 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] adds r1, r0, #0 cmp r1, #0 bne _080952AA adds r0, #1 strb r0, [r4, #0xc] strb r1, [r4, #0xd] adds r0, r4, #0 movs r1, #3 bl sub_0805E3A0 adds r0, r4, #0 movs r1, #0 bl LoadAnimation _080952AA: ldrb r0, [r4, #0xd] cmp r0, #0 beq _080952F0 movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_080044EC cmp r0, #1 bhi _080952D4 movs r0, #0 strb r0, [r4, #0xd] movs r2, #0x80 lsls r2, r2, #1 movs r3, #0xc0 lsls r3, r3, #8 adds r0, r4, #0 adds r1, r2, #0 bl sub_0805EC9C b _080952F0 _080952D4: movs r2, #0x80 lsls r2, r2, #1 ldrb r3, [r4, #0xe] lsls r3, r3, #8 adds r0, r4, #0 adds r1, r2, #0 bl sub_0805EC9C ldrb r0, [r4, #0xe] adds r0, #0xa strb r0, [r4, #0xe] adds r0, r4, #0 bl sub_0806F69C _080952F0: ldr r3, [r4, #0x54] cmp r3, #0 beq _080952FE adds r0, r3, #0 adds r1, r4, #0 bl CopyPosition _080952FE: adds r0, r4, #0 bl sub_080042B8 ldr r3, [r4, #0x50] cmp r3, #0 beq _08095328 ldrb r1, [r3, #0x18] lsls r1, r1, #0x1e lsrs r1, r1, #0x1e ldrb r2, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] ldr r0, [r3, #4] cmp r0, #0 bne _0809532C bl sub_0805E780 b _0809532C _08095328: bl sub_0805E780 _0809532C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08095330 sub_08095330: @ 0x08095330 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0x6a movs r1, #0xb movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _0809535E str r4, [r5, #0x54] str r5, [r4, #0x54] str r5, [r4, #0x50] adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldr r0, _08095360 @ =0x0000FFF0 strh r0, [r4, #0x36] adds r0, r4, #0 adds r1, r4, #0 bl sub_0806FAB0 _0809535E: pop {r4, r5, pc} .align 2, 0 _08095360: .4byte 0x0000FFF0 thumb_func_start sub_08095364 sub_08095364: @ 0x08095364 push {r4, r5, r6, lr} ldr r6, [r0, #0x54] cmp r6, #0 beq _0809539E movs r5, #0 movs r0, #2 strb r0, [r6, #0x1e] adds r0, r6, #0 adds r0, #0x38 movs r4, #1 strb r4, [r0] adds r0, r6, #0 bl UpdateSpriteOrderAndFlip str r5, [r6, #0x54] strb r4, [r6, #0xd] ldr r0, _080953A0 @ =0x0000FFF0 strh r0, [r6, #0x36] movs r0, #7 strb r0, [r6, #0x15] movs r0, #0xc0 lsls r0, r0, #0xa str r0, [r6, #0x20] movs r0, #0x80 strh r0, [r6, #0x24] adds r0, r6, #0 movs r1, #1 bl LoadAnimation _0809539E: pop {r4, r5, r6, pc} .align 2, 0 _080953A0: .4byte 0x0000FFF0 thumb_func_start sub_080953A4 sub_080953A4: @ 0x080953A4 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _080953E0 adds r0, #1 strb r0, [r4, #0xc] ldr r0, _08095414 @ =0x0000FFF0 strh r0, [r4, #0x36] adds r0, r4, #0 movs r1, #2 bl sub_0805E3A0 ldr r1, _08095418 @ =gUnk_08114F30 ldrb r2, [r4, #0x19] lsrs r0, r2, #6 adds r0, r0, r1 ldrb r1, [r0] lsls r1, r1, #6 movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 adds r1, r4, #0 bl sub_0806FAB0 adds r0, r4, #0 bl sub_0807DD64 _080953E0: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_08004274 ldrb r0, [r4, #0xa] cmp r0, #0xd bne _08095412 adds r0, r4, #0 adds r0, #0x5b ldrb r1, [r0] movs r0, #1 ands r0, r1 ldr r1, _0809541C @ =0x00000139 cmp r0, #0 beq _0809540C movs r1, #0 _0809540C: adds r0, r4, #0 bl sub_0801D2B4 _08095412: pop {r4, pc} .align 2, 0 _08095414: .4byte 0x0000FFF0 _08095418: .4byte gUnk_08114F30 _0809541C: .4byte 0x00000139 thumb_func_start sub_08095420 sub_08095420: @ 0x08095420 push {r4, r5, r6, lr} adds r5, r0, #0 adds r6, r1, #0 movs r0, #0x6a movs r1, #0xc movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08095450 ldr r3, _08095454 @ =0xFFF00000 adds r0, r5, #0 adds r1, r4, #0 movs r2, #0 bl PositionRelative ldr r1, [r6, #4] adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _08095450: pop {r4, r5, r6, pc} .align 2, 0 _08095454: .4byte 0xFFF00000 thumb_func_start nullsub_527 nullsub_527: @ 0x08095458 bx lr .align 2, 0 thumb_func_start sub_0809545C sub_0809545C: @ 0x0809545C push {r4, r5, r6, lr} adds r4, r0, #0 adds r6, r1, #0 movs r0, #0x6a movs r1, #0xd movs r2, #0 bl CreateObject adds r5, r0, #0 cmp r5, #0 beq _080954A6 ldr r3, _080954A8 @ =0xFFF00000 adds r0, r4, #0 adds r1, r5, #0 movs r2, #0 bl PositionRelative ldr r1, [r6, #4] adds r0, r5, #0 bl sub_0807DAD0 adds r1, r5, #0 adds r1, #0x84 str r0, [r1] movs r0, #0x6a movs r1, #2 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _080954A6 adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition str r5, [r4, #0x50] _080954A6: pop {r4, r5, r6, pc} .align 2, 0 _080954A8: .4byte 0xFFF00000 thumb_func_start sub_080954AC sub_080954AC: @ 0x080954AC push {r4, r5, lr} adds r5, r0, #0 movs r0, #0x6a movs r1, #0x1a movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _080954D6 adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldr r1, _080954D8 @ =gUnk_08015B14 adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _080954D6: pop {r4, r5, pc} .align 2, 0 _080954D8: .4byte gUnk_08015B14 thumb_func_start sub_080954DC sub_080954DC: @ 0x080954DC push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #1 beq _08095598 cmp r0, #1 bgt _080954F0 cmp r0, #0 beq _080954FC b _0809562C _080954F0: cmp r0, #2 beq _080955B8 cmp r0, #3 bne _080954FA b _08095620 _080954FA: b _0809562C _080954FC: ldrb r0, [r4, #0xe] adds r5, r0, #0 cmp r5, #0 beq _0809550A subs r0, #1 strb r0, [r4, #0xe] b _0809562C _0809550A: movs r0, #1 movs r2, #1 strb r0, [r4, #0xc] strb r5, [r4, #0xd] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] strh r5, [r4, #0x36] adds r3, r4, #0 adds r3, #0x29 ldrb r1, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r3] ldrh r1, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x68 strh r1, [r0] ldrh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x6a strh r0, [r1] adds r0, r4, #0 adds r0, #0x6c strh r5, [r0] ldr r1, _08095590 @ =gUnk_08122AE0 ldrb r0, [r4, #0xb] adds r0, r0, r1 ldrb r0, [r0] adds r5, r4, #0 adds r5, #0x6e strb r0, [r5] ldr r1, _08095594 @ =gUnk_08122AE8 ldrb r0, [r4, #0xb] lsls r0, r0, #1 adds r0, r0, r1 ldrh r1, [r0] adds r0, r4, #0 bl sub_0801D2B4 adds r0, r4, #0 bl sub_0807DD64 ldrb r1, [r4, #0xb] adds r1, #2 adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 bl sub_08095754 bl Random movs r1, #6 bl __modsi3 movs r1, #0xde lsls r1, r1, #1 adds r0, r0, r1 bl PlaySFX adds r1, r5, #0 b _08095630 .align 2, 0 _08095590: .4byte gUnk_08122AE0 _08095594: .4byte gUnk_08122AE8 _08095598: ldrh r0, [r4, #0x36] subs r0, #1 strh r0, [r4, #0x36] lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r2, #0x10 rsbs r2, r2, #0 adds r1, r4, #0 adds r1, #0x6e cmp r0, r2 bgt _08095630 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] strh r2, [r4, #0x36] b _08095630 _080955B8: adds r5, r4, #0 adds r5, #0x6c ldrh r0, [r5] adds r0, #1 strh r0, [r5] lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0x40 bls _080955CE movs r0, #0x40 strh r0, [r5] _080955CE: ldr r3, _0809561C @ =gUnk_080C9160 movs r2, #0x6e adds r2, r2, r4 mov ip, r2 ldrb r0, [r2] adds r0, #0x40 lsls r0, r0, #1 adds r0, r0, r3 movs r2, #0 ldrsh r1, [r0, r2] ldrh r0, [r5] lsls r0, r0, #8 adds r2, r1, #0 muls r2, r0, r2 asrs r2, r2, #0x10 strh r2, [r4, #0x2e] mov r1, ip ldrb r0, [r1] lsls r0, r0, #1 adds r0, r0, r3 movs r3, #0 ldrsh r1, [r0, r3] ldrh r0, [r5] lsls r0, r0, #7 muls r1, r0, r1 asrs r1, r1, #0x10 strh r1, [r4, #0x32] adds r0, r4, #0 adds r0, #0x68 ldrh r0, [r0] adds r2, r2, r0 strh r2, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x6a ldrh r0, [r0] adds r1, r1, r0 strh r1, [r4, #0x32] mov r1, ip b _08095630 .align 2, 0 _0809561C: .4byte gUnk_080C9160 _08095620: movs r0, #0x24 ldrsh r1, [r4, r0] ldrb r2, [r4, #0x15] adds r0, r4, #0 bl sub_0806F62C _0809562C: adds r1, r4, #0 adds r1, #0x6e _08095630: ldrb r0, [r1] adds r0, #4 strb r0, [r1] ldrb r0, [r4, #0xd] cmp r0, #0 beq _0809564A adds r0, r4, #0 bl sub_080040A8 cmp r0, #0 bne _0809564A bl sub_0805E780 _0809564A: ldrb r1, [r4, #0x15] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0809565E ldrb r1, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r1 b _08095664 _0809565E: ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 _08095664: strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_08004274 pop {r4, r5, pc} thumb_func_start sub_0809567C sub_0809567C: @ 0x0809567C push {r4, lr} adds r4, r0, #0 movs r0, #3 strb r0, [r4, #0xc] movs r0, #1 strb r0, [r4, #0xd] movs r0, #0x80 lsls r0, r0, #3 strh r0, [r4, #0x24] adds r0, r4, #0 adds r0, #0x68 movs r2, #0 ldrsh r1, [r0, r2] lsls r1, r1, #0x10 ldr r0, [r4, #0x2c] subs r0, r0, r1 adds r1, r4, #0 adds r1, #0x6a movs r3, #0 ldrsh r2, [r1, r3] lsls r2, r2, #0x10 ldr r1, [r4, #0x30] subs r1, r1, r2 bl sub_080045DA strb r0, [r4, #0x15] pop {r4, pc} .align 2, 0 thumb_func_start sub_080956B4 sub_080956B4: @ 0x080956B4 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xc] cmp r0, #0 bne _080956E2 adds r0, #1 strb r0, [r5, #0xc] adds r0, r5, #0 movs r1, #0 bl UpdateSprite adds r4, r5, #0 adds r4, #0x68 ldrh r2, [r5, #0x2e] ldrh r1, [r5, #0x32] movs r0, #7 _080956D4: strh r2, [r4] adds r4, #2 strh r1, [r4] adds r4, #2 subs r0, #1 cmp r0, #0 bge _080956D4 _080956E2: adds r0, r5, #0 bl sub_08004274 ldrb r0, [r5, #0xb] ldr r1, _08095724 @ =gUnk_030010A0 ldr r1, [r1] adds r0, r0, r1 movs r1, #0xf ands r0, r1 cmp r0, #0 bne _080956FE adds r0, r5, #0 bl sub_080957B4 _080956FE: ldr r6, [r5, #0x50] cmp r6, #0 beq _08095728 ldrb r1, [r6, #0x18] lsls r1, r1, #0x1e lsrs r1, r1, #0x1e ldrb r2, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r5, #0x18] ldr r0, [r6, #4] cmp r0, #0 bne _0809572C bl sub_0805E780 b _0809572C .align 2, 0 _08095724: .4byte gUnk_030010A0 _08095728: bl sub_0805E780 _0809572C: adds r4, r5, #0 adds r4, #0x68 adds r0, r5, #0 adds r0, #0x6c adds r1, r4, #0 movs r2, #0x1c bl sub_0801D66C ldrh r0, [r4, #0x14] strh r0, [r5, #0x2e] ldrh r0, [r4, #0x16] strh r0, [r5, #0x32] ldrh r0, [r6, #0x36] strh r0, [r5, #0x36] ldrh r0, [r6, #0x2e] strh r0, [r4, #0x1c] ldrh r0, [r6, #0x32] strh r0, [r4, #0x1e] pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_08095754 sub_08095754: @ 0x08095754 push {r4, r5, lr} adds r5, r0, #0 ldrb r2, [r5, #0xb] movs r0, #0x6a movs r1, #0xf bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _0809577A str r5, [r4, #0x50] adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition adds r0, r5, #0 adds r1, r4, #0 bl sub_0806FAD8 _0809577A: pop {r4, r5, pc} thumb_func_start sub_0809577C sub_0809577C: @ 0x0809577C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08095796 adds r0, #1 strb r0, [r4, #0xc] ldr r0, _080957B0 @ =0x0000FFF0 strh r0, [r4, #0x36] adds r0, r4, #0 movs r1, #1 bl UpdateSprite _08095796: adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080957AE bl sub_0805E780 _080957AE: pop {r4, pc} .align 2, 0 _080957B0: .4byte 0x0000FFF0 thumb_func_start sub_080957B4 sub_080957B4: @ 0x080957B4 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0x6a movs r1, #0x10 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _080957DA str r5, [r4, #0x50] adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition adds r0, r5, #0 adds r1, r4, #0 bl sub_0806FAD8 _080957DA: pop {r4, r5, pc} thumb_func_start sub_080957DC sub_080957DC: @ 0x080957DC push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _080957F8 adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0807DD64 adds r0, r4, #0 movs r1, #0 bl LoadAnimation _080957F8: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_080042B8 pop {r4, pc} .align 2, 0 thumb_func_start sub_08095810 sub_08095810: @ 0x08095810 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0x6a movs r1, #0x11 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08095844 str r5, [r4, #0x50] adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition adds r0, r5, #0 adds r1, r4, #0 bl sub_0806FAB0 ldr r1, _08095848 @ =gUnk_08011940 adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _08095844: pop {r4, r5, pc} .align 2, 0 _08095848: .4byte gUnk_08011940 thumb_func_start sub_0809584C sub_0809584C: @ 0x0809584C push {r4, r5, lr} adds r5, r0, #0 adds r0, #0x45 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 beq _0809586C ldr r0, _080958D0 @ =gUnk_020342F8 subs r1, #1 bl sub_0801D5A8 cmp r0, #0 bne _0809586C bl sub_0805E780 _0809586C: ldrb r0, [r5, #0xe] cmp r0, #0 beq _08095880 ldrb r0, [r5, #0xb] bl sub_0801E7F4 cmp r0, #0 beq _08095880 bl sub_0805E780 _08095880: ldrb r0, [r5, #0xc] cmp r0, #0 bne _080958B2 adds r0, #1 strb r0, [r5, #0xc] adds r1, r5, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r5, #0 bl UpdateSpriteOrderAndFlip ldr r1, _080958D4 @ =gUnk_08114F30 ldrb r2, [r5, #0x19] lsrs r0, r2, #6 adds r0, r0, r1 ldrb r1, [r0] lsls r1, r1, #6 movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r5, #0x19] adds r0, r5, #0 bl sub_0807DD64 _080958B2: adds r0, r5, #0 movs r1, #0 bl sub_0807DDAC adds r0, r5, #0 bl sub_0807DDE4 ldrb r4, [r5, #0xa] movs r0, #0x5c strb r0, [r5, #0xa] adds r0, r5, #0 bl sub_08080CB4 strb r4, [r5, #0xa] pop {r4, r5, pc} .align 2, 0 _080958D0: .4byte gUnk_020342F8 _080958D4: .4byte gUnk_08114F30 thumb_func_start sub_080958D8 sub_080958D8: @ 0x080958D8 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _080958EC adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0807DD64 _080958EC: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08095914 adds r0, r4, #0 bl sub_08095954 _08095914: pop {r4, pc} .align 2, 0 thumb_func_start sub_08095918 sub_08095918: @ 0x08095918 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0809593C adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 adds r0, r4, #0 bl sub_0807DD64 adds r0, r4, #0 movs r1, #0 bl UpdateSprite _0809593C: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_08004274 pop {r4, pc} .align 2, 0 thumb_func_start sub_08095954 sub_08095954: @ 0x08095954 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0x6a movs r1, #0x14 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _080959B8 str r5, [r4, #0x50] ldrb r0, [r5, #0x14] ldr r1, _080959AC @ =gUnk_08122AF8 adds r0, r0, r1 movs r2, #0 ldrsb r2, [r0, r2] lsls r2, r2, #0x10 movs r3, #1 ldrsb r3, [r0, r3] lsls r3, r3, #0x10 adds r0, r5, #0 adds r1, r4, #0 bl PositionRelative ldr r0, _080959B0 @ =0x0000FFFD strh r0, [r4, #0x36] ldr r1, _080959B4 @ =gUnk_08012C48 adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] movs r0, #0x92 lsls r0, r0, #1 bl sub_08004488 adds r2, r5, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0xfe ands r0, r1 strb r0, [r2] b _080959C4 .align 2, 0 _080959AC: .4byte gUnk_08122AF8 _080959B0: .4byte 0x0000FFFD _080959B4: .4byte gUnk_08012C48 _080959B8: ldr r0, _080959C8 @ =gUnk_02033280 ldr r1, [r0] movs r2, #0x80 lsls r2, r2, #1 orrs r1, r2 str r1, [r0] _080959C4: pop {r4, r5, pc} .align 2, 0 _080959C8: .4byte gUnk_02033280 thumb_func_start sub_080959CC sub_080959CC: @ 0x080959CC push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _080959F2 adds r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #3 bl sub_0805E3A0 adds r0, r4, #0 bl sub_0807DD64 _080959F2: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x81 rsbs r0, r0, #0 ands r1, r0 adds r0, r4, #0 bl sub_08095D30 pop {r4, pc} .align 2, 0 thumb_func_start sub_08095A1C sub_08095A1C: @ 0x08095A1C push {r4, r5, lr} adds r5, r1, #0 movs r0, #0x6a movs r1, #0x16 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08095A5E ldr r1, _08095A60 @ =gRoomControls ldrh r0, [r1, #6] adds r0, #0xe8 strh r0, [r4, #0x2e] movs r2, #0x9c lsls r2, r2, #1 adds r0, r2, #0 ldrh r1, [r1, #8] adds r0, r0, r1 strh r0, [r4, #0x32] ldr r0, _08095A64 @ =0x0000FFFC strh r0, [r4, #0x36] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] ldr r1, [r5, #4] adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _08095A5E: pop {r4, r5, pc} .align 2, 0 _08095A60: .4byte gRoomControls _08095A64: .4byte 0x0000FFFC thumb_func_start sub_08095A68 sub_08095A68: @ 0x08095A68 push {lr} sub sp, #4 movs r0, #0 str r0, [sp] movs r0, #6 movs r1, #0x6a movs r2, #6 movs r3, #0x16 bl sub_0805EB2C adds r1, r0, #0 cmp r1, #0 beq _08095A86 movs r0, #0xff strb r0, [r1, #0xc] _08095A86: add sp, #4 pop {pc} .align 2, 0 thumb_func_start sub_08095A8C sub_08095A8C: @ 0x08095A8C push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #5 bhi _08095B44 lsls r0, r0, #2 ldr r1, _08095AA0 @ =_08095AA4 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08095AA0: .4byte _08095AA4 _08095AA4: @ jump table .4byte _08095ABC @ case 0 .4byte _08095ACC @ case 1 .4byte _08095ADC @ case 2 .4byte _08095AE6 @ case 3 .4byte _08095B12 @ case 4 .4byte _08095B1C @ case 5 _08095ABC: ldrb r0, [r4, #0xc] adds r0, #1 movs r1, #0 strb r0, [r4, #0xc] strb r1, [r4, #0x1e] adds r0, r4, #0 bl sub_0807DD64 _08095ACC: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 b _08095B44 _08095ADC: ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0x78 strb r0, [r4, #0xe] _08095AE6: ldrb r1, [r4, #0x18] lsls r0, r1, #0x1e lsrs r0, r0, #0x1e movs r5, #1 eors r0, r5 movs r3, #4 rsbs r3, r3, #0 adds r2, r3, #0 ands r2, r1 orrs r2, r0 strb r2, [r4, #0x18] ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08095B44 movs r0, #1 strb r5, [r4, #0xc] ands r2, r3 orrs r2, r0 b _08095B42 _08095B12: ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] movs r0, #0x78 strb r0, [r4, #0xe] _08095B1C: ldrb r1, [r4, #0x18] lsls r0, r1, #0x1e lsrs r0, r0, #0x1e movs r5, #1 eors r0, r5 movs r3, #4 rsbs r3, r3, #0 adds r2, r3, #0 ands r2, r1 orrs r2, r0 strb r2, [r4, #0x18] ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08095B44 strb r5, [r4, #0xc] ands r2, r3 _08095B42: strb r2, [r4, #0x18] _08095B44: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08095B48 sub_08095B48: @ 0x08095B48 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xc] cmp r0, #0 bne _08095B78 adds r0, #1 strb r0, [r5, #0xc] adds r1, r5, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r5, #0 bl UpdateSpriteOrderAndFlip ldr r1, _08095BA8 @ =gUnk_08114F30 ldrb r2, [r5, #0x19] lsrs r0, r2, #6 adds r0, r0, r1 ldrb r1, [r0] lsls r1, r1, #6 movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r5, #0x19] _08095B78: ldrb r0, [r5, #0x18] movs r4, #4 rsbs r4, r4, #0 adds r1, r4, #0 ands r1, r0 strb r1, [r5, #0x18] ldr r2, [r5, #0x50] cmp r2, #0 beq _08095BCE adds r0, r2, #0 adds r0, #0x5a ldrb r3, [r0] movs r0, #0x40 ands r0, r3 cmp r0, #0 bne _08095BAC movs r0, #0x80 ands r0, r3 cmp r0, #0 beq _08095BCE bl sub_0805E780 b _08095BDC .align 2, 0 _08095BA8: .4byte gUnk_08114F30 _08095BAC: adds r0, r1, #0 ands r0, r4 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] ldrh r0, [r2, #0x12] ldrb r1, [r2, #0x1e] bl sub_080700C8 ldrb r1, [r0] adds r2, r5, #0 adds r2, #0x62 strb r1, [r2] ldrb r0, [r0, #1] adds r1, r5, #0 adds r1, #0x63 strb r0, [r1] _08095BCE: ldrb r4, [r5, #0xa] ldrb r0, [r5, #0xb] strb r0, [r5, #0xa] adds r0, r5, #0 bl sub_08080CB4 strb r4, [r5, #0xa] _08095BDC: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08095BE0 sub_08095BE0: @ 0x08095BE0 push {r4, lr} adds r4, r0, #0 adds r2, r1, #0 movs r0, #0x6a movs r1, #0x18 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _08095BFC str r4, [r1, #0x50] adds r0, r4, #0 bl CopyPosition _08095BFC: pop {r4, pc} .align 2, 0 thumb_func_start sub_08095C00 sub_08095C00: @ 0x08095C00 push {lr} adds r2, r0, #0 ldrb r1, [r2, #0xc] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08095C14 bl sub_0805E780 b _08095C46 _08095C14: ldr r3, [r2, #0x50] cmp r3, #0 beq _08095C46 adds r1, r2, #0 adds r1, #0x60 movs r0, #0xe8 strh r0, [r1] ldrb r0, [r3, #0x18] lsls r0, r0, #0x1e lsrs r0, r0, #0x1e cmp r0, #1 bne _08095C38 ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2, #0x18] b _08095C46 _08095C38: ldrb r0, [r2, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #1 orrs r1, r0 strb r1, [r2, #0x18] _08095C46: pop {pc} thumb_func_start sub_08095C48 sub_08095C48: @ 0x08095C48 push {r4, lr} adds r4, r0, #0 movs r0, #0x6a movs r1, #0x19 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _08095C66 str r1, [r4, #0x54] str r4, [r1, #0x50] adds r0, r4, #0 bl CopyPosition _08095C66: pop {r4, pc} thumb_func_start sub_08095C68 sub_08095C68: @ 0x08095C68 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08095C80 adds r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x1e] ldrh r2, [r4, #0x12] adds r0, r4, #0 bl sub_080042D0 _08095C80: ldrb r0, [r4, #0xe] cmp r0, #0 beq _08095CAA subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #7 bhi _08095CA4 ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _08095CA4: ldrb r0, [r4, #0xe] cmp r0, #0 bne _08095CAE _08095CAA: bl sub_0805E780 _08095CAE: pop {r4, pc} thumb_func_start sub_08095CB0 sub_08095CB0: @ 0x08095CB0 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0x6a movs r1, #0x1b movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08095CDC str r4, [r5, #0x54] str r5, [r4, #0x50] adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition movs r0, #0x10 strb r0, [r4, #0xe] ldrb r0, [r5, #0x1e] strb r0, [r4, #0x1e] ldrb r0, [r5, #0x1e] strb r0, [r4, #0x1f] _08095CDC: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08095CE0 sub_08095CE0: @ 0x08095CE0 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08095D06 adds r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 adds r0, r4, #0 bl sub_0807DD64 _08095D06: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x81 rsbs r0, r0, #0 ands r1, r0 adds r0, r4, #0 bl sub_08095D30 pop {r4, pc} .align 2, 0 thumb_func_start sub_08095D30 sub_08095D30: @ 0x08095D30 push {lr} adds r2, r0, #0 adds r0, r1, #0 cmp r0, #0 beq _08095D4E ldr r1, _08095D50 @ =gUnk_08122B00 lsls r0, r0, #1 adds r0, r0, r1 ldrh r1, [r0] movs r0, #0x81 rsbs r0, r0, #0 ands r1, r0 adds r0, r2, #0 bl sub_0801D2B4 _08095D4E: pop {pc} .align 2, 0 _08095D50: .4byte gUnk_08122B00 thumb_func_start sub_08095D54 sub_08095D54: @ 0x08095D54 push {r4, r5, lr} adds r5, r1, #0 movs r0, #0x6a movs r1, #0x1c movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08095D86 ldr r0, _08095D88 @ =gLinkEntity adds r1, r4, #0 bl CopyPosition adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] ldr r1, [r5, #4] adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _08095D86: pop {r4, r5, pc} .align 2, 0 _08095D88: .4byte gLinkEntity thumb_func_start sub_08095D8C sub_08095D8C: @ 0x08095D8C push {r4, r5, r6, lr} adds r5, r0, #0 adds r6, r1, #0 movs r0, #0x6a movs r1, #0x1d movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08095DB8 adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldr r1, [r6, #4] adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _08095DB8: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_08095DBC sub_08095DBC: @ 0x08095DBC push {r4, r5, lr} adds r4, r0, #0 ldr r5, _08095DF0 @ =gUnk_02033280 ldr r0, [r5] movs r1, #0x10 ands r0, r1 cmp r0, #0 beq _08095DD0 bl sub_0805E780 _08095DD0: ldrb r0, [r4, #0xb] cmp r0, #0 bne _08095DF4 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08095DE6 adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0807DD64 _08095DE6: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC b _08095E74 .align 2, 0 _08095DF0: .4byte gUnk_02033280 _08095DF4: ldrb r0, [r4, #0xc] cmp r0, #0 bne _08095E30 adds r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #0x4b bl UpdateSprite ldr r1, _08095E78 @ =gUnk_08114F30 ldrb r2, [r4, #0x19] lsrs r0, r2, #6 adds r0, r0, r1 ldrb r1, [r0] lsls r1, r1, #6 movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 adds r1, r4, #0 bl sub_0806FAB0 _08095E30: ldrb r2, [r4, #0xb] movs r0, #0x80 ands r0, r2 cmp r0, #0 bne _08095E56 ldr r0, [r5] movs r1, #0x80 lsls r1, r1, #0xa ands r0, r1 cmp r0, #0 beq _08095E56 movs r0, #0xff strb r0, [r4, #0xb] movs r0, #0x80 lsls r0, r0, #0xb str r0, [r4, #0x20] movs r0, #0xc0 lsls r0, r0, #8 strh r0, [r4, #0x24] _08095E56: movs r0, #0x24 ldrsh r1, [r4, r0] adds r0, r4, #0 bl sub_08003FC4 adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 bl sub_080040A8 cmp r0, #0 bne _08095E74 bl sub_0805E780 _08095E74: pop {r4, r5, pc} .align 2, 0 _08095E78: .4byte gUnk_08114F30 thumb_func_start sub_08095E7C sub_08095E7C: @ 0x08095E7C push {r4, r5, r6, lr} adds r5, r0, #0 adds r6, r1, #0 movs r0, #0x6a movs r1, #0x1e movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08095EA8 adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldr r1, [r6, #4] adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _08095EA8: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_08095EAC sub_08095EAC: @ 0x08095EAC push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} mov sb, r0 adds r4, r1, #0 movs r0, #0x6a movs r1, #0x1e movs r2, #1 bl CreateObject adds r5, r0, #0 cmp r5, #0 beq _08095F2A ldr r0, [r4, #4] cmp r0, #0 bne _08095EE0 movs r7, #0x10 movs r6, #0x1f movs r0, #0x80 lsls r0, r0, #7 mov sl, r0 movs r2, #0 mov r8, r2 b _08095F02 _08095EE0: movs r7, #8 movs r6, #0xf movs r0, #0x80 lsls r0, r0, #0xb mov sl, r0 ldr r4, _08095F34 @ =gUnk_08122B0E bl Random movs r1, #7 ands r1, r0 lsls r1, r1, #1 adds r1, r1, r4 movs r0, #0 ldrsh r2, [r1, r0] mov r8, r2 movs r0, #0xff strb r0, [r5, #0xb] _08095F02: bl Random adds r4, r0, #0 ands r4, r6 subs r4, r7, r4 bl Random ands r6, r0 subs r3, r7, r6 lsls r4, r4, #0x10 lsls r3, r3, #0x10 mov r0, sb adds r1, r5, #0 adds r2, r4, #0 bl PositionRelative mov r2, sl str r2, [r5, #0x20] mov r0, r8 strh r0, [r5, #0x24] _08095F2A: pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 _08095F34: .4byte gUnk_08122B0E thumb_func_start sub_08095F38 sub_08095F38: @ 0x08095F38 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08095FC2 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0xff strb r0, [r4, #0x1e] ldrb r0, [r4, #0xb] cmp r0, #4 beq _08095F64 cmp r0, #4 bgt _08095F5A cmp r0, #3 beq _08095F60 b _08095F6A _08095F5A: cmp r0, #6 beq _08095F68 b _08095F6A _08095F60: movs r1, #0 b _08095F6A _08095F64: movs r1, #1 b _08095F6A _08095F68: movs r1, #4 _08095F6A: adds r0, r4, #0 bl sub_0801D2B4 ldr r0, _08095F90 @ =gLinkEntity adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 bne _08095F98 adds r1, r4, #0 adds r1, #0x84 ldr r0, _08095F94 @ =0x000008BF str r0, [r1] movs r0, #0x34 strb r0, [r4, #0xe] movs r0, #0xb5 b _08095FA6 .align 2, 0 _08095F90: .4byte gLinkEntity _08095F94: .4byte 0x000008BF _08095F98: adds r1, r4, #0 adds r1, #0x84 ldr r0, _08096020 @ =0x000008E3 str r0, [r1] movs r0, #0x55 strb r0, [r4, #0xe] movs r0, #0xd6 _08095FA6: strb r0, [r4, #0xf] ldr r0, _08096024 @ =gLinkEntity adds r1, r4, #0 bl CopyPosition adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] _08095FC2: ldr r5, _08096024 @ =gLinkEntity adds r2, r5, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _08095FE0 movs r0, #0xef ands r0, r1 strb r0, [r2] movs r0, #0xea lsls r0, r0, #1 bl PlaySFX _08095FE0: ldrh r0, [r5, #0x12] adds r1, r4, #0 adds r1, #0x84 ldr r2, [r1] lsrs r1, r2, #8 cmp r0, r1 bne _08095FFC adds r0, r5, #0 adds r0, #0x58 ldrb r1, [r0] lsls r0, r2, #0x18 lsrs r0, r0, #0x18 cmp r1, r0 beq _08096000 _08095FFC: bl sub_0805E780 _08096000: ldr r0, _08096024 @ =gLinkEntity ldrb r0, [r0, #0x1e] ldrb r1, [r4, #0xe] subs r0, r0, r1 ldrb r1, [r4, #0xf] adds r0, r0, r1 ldrb r1, [r4, #0x1e] cmp r0, r1 beq _0809601E strb r0, [r4, #0x1e] ldrb r1, [r4, #0x1e] ldrh r2, [r4, #0x12] adds r0, r4, #0 bl sub_080042D0 _0809601E: pop {r4, r5, pc} .align 2, 0 _08096020: .4byte 0x000008E3 _08096024: .4byte gLinkEntity thumb_func_start sub_08096028 sub_08096028: @ 0x08096028 push {r4, r5, lr} movs r4, #6 movs r5, #0xc0 lsls r5, r5, #2 adds r0, r5, #0 movs r1, #0x7b bl GetProgressFlagWithOffset cmp r0, #0 bne _0809603E movs r4, #4 _0809603E: adds r0, r5, #0 movs r1, #0x7a bl GetProgressFlagWithOffset cmp r0, #0 bne _0809604C movs r4, #3 _0809604C: movs r0, #0x6a movs r1, #0x1f adds r2, r4, #0 bl CreateObject pop {r4, r5, pc} thumb_func_start sub_08096058 sub_08096058: @ 0x08096058 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0809606C adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0807DD64 _0809606C: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_08004274 pop {r4, pc} .align 2, 0 thumb_func_start sub_08096084 sub_08096084: @ 0x08096084 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _080960A0 adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0807DD64 ldrb r1, [r4, #0xb] adds r0, r4, #0 bl UpdateSprite _080960A0: adds r0, r4, #0 movs r1, #0 bl sub_0807DDAC adds r0, r4, #0 bl sub_0807DDE4 adds r0, r4, #0 bl sub_08004274 ldr r0, [r4, #0x50] cmp r0, #0 beq _080960C0 adds r1, r4, #0 bl CopyPosition _080960C0: pop {r4, pc} .align 2, 0 thumb_func_start sub_080960C4 sub_080960C4: @ 0x080960C4 push {r4, r5, r6, lr} adds r5, r0, #0 adds r6, r1, #0 movs r0, #0x6a movs r1, #0x23 movs r2, #0x49 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08096110 str r5, [r4, #0x50] adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldr r1, _08096160 @ =gUnk_08114F34 ldrb r0, [r5, #0x19] lsrs r0, r0, #6 adds r0, r0, r1 ldrb r1, [r0] lsls r1, r1, #6 ldrb r2, [r4, #0x19] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r5, #0 adds r1, r4, #0 bl sub_0806FAD8 ldr r1, [r6, #4] adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _08096110: movs r0, #0x6a movs r1, #0x24 movs r2, #0x4a bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _0809615E str r5, [r4, #0x50] adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldr r1, _08096164 @ =gUnk_08114F30 ldrb r0, [r5, #0x19] lsrs r0, r0, #6 adds r0, r0, r1 ldrb r1, [r0] lsls r1, r1, #6 ldrb r2, [r4, #0x19] movs r0, #0x3f ands r0, r2 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r5, #0 adds r1, r4, #0 bl sub_0806FAB0 adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] ldr r1, [r6, #4] adds r0, r4, #0 bl sub_0807DAD0 adds r1, r4, #0 adds r1, #0x84 str r0, [r1] _0809615E: pop {r4, r5, r6, pc} .align 2, 0 _08096160: .4byte gUnk_08114F34 _08096164: .4byte gUnk_08114F30 thumb_func_start sub_08096168 sub_08096168: @ 0x08096168 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0809618C adds r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #0x4b bl UpdateSprite _0809618C: adds r0, r4, #0 bl sub_08004274 movs r0, #0x24 ldrsh r1, [r4, r0] ldrb r2, [r4, #0x15] adds r0, r4, #0 bl sub_0806F62C adds r0, r4, #0 bl sub_080040A8 cmp r0, #0 bne _080961AC bl sub_0805E780 _080961AC: pop {r4, pc} .align 2, 0 thumb_func_start sub_080961B0 sub_080961B0: @ 0x080961B0 push {r4, r5, r6, r7, lr} adds r7, r0, #0 movs r5, #0 ldr r6, _080961F0 @ =gUnk_08122B1E _080961B8: movs r0, #0x6a movs r1, #0x25 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _080961E6 adds r0, r7, #0 adds r1, r4, #0 bl CopyPosition lsls r0, r5, #5 strb r0, [r4, #0x15] bl Random movs r2, #0xf8 lsls r2, r2, #1 adds r1, r2, #0 ands r0, r1 ldrh r1, [r6] adds r0, r0, r1 strh r0, [r4, #0x24] _080961E6: adds r6, #2 adds r5, #1 cmp r5, #7 ble _080961B8 pop {r4, r5, r6, r7, pc} .align 2, 0 _080961F0: .4byte gUnk_08122B1E thumb_func_start sub_080961F4 sub_080961F4: @ 0x080961F4 ldrb r2, [r0, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r2 movs r2, #1 orrs r1, r2 strb r1, [r0, #0x18] movs r1, #0 strb r1, [r0, #0x1e] bx lr thumb_func_start sub_08096208 sub_08096208: @ 0x08096208 push {r4, r5, lr} adds r5, r0, #0 lsls r1, r1, #1 ldr r0, _08096238 @ =gUnk_08122B2E adds r4, r1, r0 movs r0, #0x6a movs r1, #0x26 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _08096234 movs r2, #0 ldrsb r2, [r4, r2] lsls r2, r2, #0x10 movs r3, #1 ldrsb r3, [r4, r3] lsls r3, r3, #0x10 adds r0, r5, #0 bl PositionRelative _08096234: pop {r4, r5, pc} .align 2, 0 _08096238: .4byte gUnk_08122B2E thumb_func_start sub_0809623C sub_0809623C: @ 0x0809623C push {r4, lr} adds r4, r0, #0 movs r0, #0x6a movs r1, #0x27 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _0809625A ldr r3, _0809625C @ =0xFFF00000 adds r0, r4, #0 movs r2, #0 bl PositionRelative _0809625A: pop {r4, pc} .align 2, 0 _0809625C: .4byte 0xFFF00000 thumb_func_start sub_08096260 sub_08096260: @ 0x08096260 push {r4, lr} adds r4, r0, #0 movs r0, #0x6a movs r1, #0x28 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _0809627E ldr r3, _08096280 @ =0xFFF00000 adds r0, r4, #0 movs r2, #0 bl PositionRelative _0809627E: pop {r4, pc} .align 2, 0 _08096280: .4byte 0xFFF00000 thumb_func_start sub_08096284 sub_08096284: @ 0x08096284 push {lr} movs r1, #0xd bl sub_0809629C pop {pc} .align 2, 0 thumb_func_start sub_08096290 sub_08096290: @ 0x08096290 push {lr} movs r1, #0xe bl sub_0809629C pop {pc} .align 2, 0 thumb_func_start sub_0809629C sub_0809629C: @ 0x0809629C push {r4, r5, r6, lr} adds r5, r0, #0 adds r6, r1, #0 ldrb r0, [r5, #0xc] cmp r0, #0 bne _080962B2 movs r0, #1 strb r0, [r5, #0xc] adds r0, r5, #0 bl sub_0807DD64 _080962B2: adds r0, r5, #0 movs r1, #0 bl sub_0807DDAC adds r0, r5, #0 bl sub_0807DDE4 movs r1, #0x80 lsls r1, r1, #5 adds r0, r5, #0 bl sub_08003FC4 ldrb r4, [r5, #0xa] strb r6, [r5, #0xa] adds r0, r5, #0 bl sub_08080CB4 strb r4, [r5, #0xa] pop {r4, r5, r6, pc} thumb_func_start sub_080962D8 sub_080962D8: @ 0x080962D8 push {lr} movs r1, #0x80 lsls r1, r1, #1 movs r0, #6 bl DoFade pop {pc} .align 2, 0 thumb_func_start sub_080962E8 sub_080962E8: @ 0x080962E8 push {lr} movs r1, #0x80 lsls r1, r1, #1 movs r0, #7 bl DoFade pop {pc} .align 2, 0 thumb_func_start sub_080962F8 sub_080962F8: @ 0x080962F8 push {r4, r5, lr} adds r5, r0, #0 ldr r4, [r1, #4] lsls r4, r4, #4 ldr r0, _08096318 @ =gUnk_08122B3C adds r4, r4, r0 ldrb r2, [r4, #0xc] adds r3, r4, #0 adds r3, #8 adds r0, r5, #0 movs r1, #1 bl sub_08078850 str r4, [r5, #0x48] pop {r4, r5, pc} .align 2, 0 _08096318: .4byte gUnk_08122B3C thumb_func_start sub_0809631C sub_0809631C: @ 0x0809631C push {lr} ldr r2, _08096330 @ =gUnk_08123168 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08096330: .4byte gUnk_08123168 thumb_func_start sub_08096334 sub_08096334: @ 0x08096334 push {r4, r5, r6, lr} adds r5, r0, #0 movs r0, #1 strb r0, [r5, #0xc] movs r4, #0 movs r6, #0x80 strh r6, [r5, #0x24] ldr r0, _08096358 @ =gUnk_080FD2A8 str r0, [r5, #0x48] ldrb r0, [r5, #0xa] cmp r0, #1 bne _0809634E b _08096494 _0809634E: cmp r0, #1 bgt _0809635C cmp r0, #0 beq _08096368 b _0809650A .align 2, 0 _08096358: .4byte gUnk_080FD2A8 _0809635C: cmp r0, #2 bne _08096362 b _080964A6 _08096362: cmp r0, #3 beq _080963FC b _0809650A _08096368: movs r0, #0x1a bl GetProgressFlag cmp r0, #0 beq _080963DA movs r0, #0x1b bl GetProgressFlag cmp r0, #0 bne _080963A4 ldr r0, _0809639C @ =gLinkEntity movs r3, #0x80 lsls r3, r3, #9 adds r1, r5, #0 movs r2, #0 bl PositionRelative ldr r0, _080963A0 @ =0x00004022 adds r1, r5, #0 adds r1, #0x38 ldrb r2, [r1] movs r1, #0xdc bl UpdateCollisionLayer b _0809650A .align 2, 0 _0809639C: .4byte gLinkEntity _080963A0: .4byte 0x00004022 _080963A4: ldrb r0, [r5, #0xb] bl sub_0807CBD0 cmp r0, #0 bne _080963C8 adds r0, r5, #0 movs r1, #0xa bl UpdateSprite ldrh r0, [r5, #0x32] adds r0, #4 strh r0, [r5, #0x32] movs r0, #4 strb r0, [r5, #0xc] ldr r0, _080963C4 @ =0x0000403B b _080964C4 .align 2, 0 _080963C4: .4byte 0x0000403B _080963C8: strb r4, [r5, #0xb] movs r0, #2 strb r0, [r5, #0xf] adds r0, r5, #0 bl sub_080969A4 bl sub_0805E780 b _0809650A _080963DA: ldr r1, _080963F8 @ =gRoomControls ldrh r0, [r1, #6] adds r0, #0xd0 strh r0, [r5, #0x2e] ldrh r0, [r1, #8] adds r0, #0x44 strh r0, [r5, #0x32] movs r0, #4 strb r0, [r5, #0xc] ldrb r1, [r5, #0xa] adds r1, #3 adds r0, r5, #0 bl UpdateSprite b _0809651A .align 2, 0 _080963F8: .4byte gRoomControls _080963FC: movs r0, #0x1a bl GetProgressFlag cmp r0, #0 beq _08096450 movs r0, #0x1b bl GetProgressFlag cmp r0, #0 bne _0809644C ldr r0, _08096444 @ =gLinkEntity adds r1, r0, #0 adds r1, #0x29 ldrb r2, [r1] lsls r2, r2, #0x1d lsrs r2, r2, #0x1d subs r2, #1 adds r4, r5, #0 adds r4, #0x29 movs r1, #7 ands r2, r1 ldrb r3, [r4] movs r1, #8 rsbs r1, r1, #0 ands r1, r3 orrs r1, r2 strb r1, [r4] adds r1, r0, #0 adds r1, #0x79 strb r6, [r1] ldr r3, _08096448 @ =0xFFE80000 adds r1, r5, #0 movs r2, #0 bl PositionRelative b _08096450 .align 2, 0 _08096444: .4byte gLinkEntity _08096448: .4byte 0xFFE80000 _0809644C: bl sub_0805E780 _08096450: adds r0, r5, #0 movs r1, #0x6b movs r2, #1 movs r3, #0 bl CreateObjectWithParent adds r1, r0, #0 str r1, [r5, #0x54] cmp r1, #0 beq _0809646E ldr r2, _0809648C @ =0xFFE40000 ldr r3, _08096490 @ =0xFFD80000 adds r0, r5, #0 bl PositionRelative _0809646E: movs r0, #0x10 strb r0, [r5, #0x16] ldrb r0, [r5, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r5, #0x19] adds r0, r5, #0 movs r1, #0xc bl UpdateSprite adds r0, r5, #0 bl sub_0809651C b _0809651A .align 2, 0 _0809648C: .4byte 0xFFE40000 _08096490: .4byte 0xFFD80000 _08096494: ldrb r0, [r5, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r5, #0x19] adds r0, r5, #0 movs r1, #6 bl sub_0805E3A0 b _0809650A _080964A6: ldrb r0, [r5, #0xb] bl sub_0807CBD0 cmp r0, #0 bne _080964F8 adds r0, r5, #0 movs r1, #0xb bl UpdateSprite ldrh r0, [r5, #0x32] adds r0, #4 strh r0, [r5, #0x32] movs r0, #4 strb r0, [r5, #0xc] ldr r0, _080964F0 @ =0x00004032 _080964C4: movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _080964F4 @ =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 _0809651A .align 2, 0 _080964F0: .4byte 0x00004032 _080964F4: .4byte gRoomControls _080964F8: strb r4, [r5, #0xb] movs r0, #3 strb r0, [r5, #0xf] adds r0, r5, #0 bl sub_080969A4 bl sub_0805E780 b _0809651A _0809650A: ldrb r1, [r5, #0xa] adds r1, #3 adds r0, r5, #0 bl UpdateSprite adds r0, r5, #0 bl sub_0809651C _0809651A: pop {r4, r5, r6, pc} thumb_func_start sub_0809651C sub_0809651C: @ 0x0809651C push {r4, r5, r6, r7, lr} adds r6, r0, #0 ldrb r3, [r6, #0xa] movs r0, #1 ands r0, r3 cmp r0, #0 beq _080965D6 cmp r3, #3 bne _0809653C adds r0, r6, #0 bl sub_08078930 adds r0, r6, #0 bl sub_0800445C b _080965C8 _0809653C: ldr r0, [r6, #0x50] ldr r2, _0809655C @ =0xFFE40000 ldr r3, _08096560 @ =0xFFD80000 adds r1, r6, #0 bl PositionRelative ldr r1, [r6, #0x50] ldrb r0, [r1, #0xc] cmp r0, #2 bne _08096586 ldrb r0, [r1, #0xd] cmp r0, #1 beq _08096564 cmp r0, #2 beq _08096580 b _08096570 .align 2, 0 _0809655C: .4byte 0xFFE40000 _08096560: .4byte 0xFFD80000 _08096564: ldr r0, _0809657C @ =gLinkState ldrb r1, [r0, #0xd] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08096580 _08096570: adds r0, r6, #0 movs r1, #4 bl UpdateSprite b _08096586 .align 2, 0 _0809657C: .4byte gLinkState _08096580: adds r0, r6, #0 bl sub_08004274 _08096586: ldr r0, [r6, #0x50] adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d lsrs r1, r1, #0x1d subs r1, #1 adds r3, r6, #0 adds r3, #0x29 movs r0, #7 ands r1, r0 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] ldr r4, [r6, #0x50] ldrb r2, [r4, #0x19] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r6, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r6, #0x19] ldrb r0, [r4, #0x1b] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r6, #0x1b] ands r1, r2 orrs r1, r0 strb r1, [r6, #0x1b] _080965C8: adds r0, r6, #0 movs r1, #0xcc movs r2, #0xcc movs r3, #0 bl sub_0805EC9C b _080966F6 _080965D6: ldr r1, _080965FC @ =gLinkState ldrb r2, [r1, #0x1a] movs r0, #0x80 orrs r0, r2 strb r0, [r1, #0x1a] movs r0, #5 strb r0, [r1, #5] ldrb r1, [r1, #0xd] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08096600 lsls r1, r3, #0x18 lsrs r1, r1, #0x19 adds r1, #3 adds r0, r6, #0 bl UpdateSprite b _08096606 .align 2, 0 _080965FC: .4byte gLinkState _08096600: adds r0, r6, #0 bl sub_08004274 _08096606: ldr r0, _08096664 @ =gLinkEntity ldrb r0, [r0, #0x14] movs r1, #6 ands r1, r0 ldr r4, _08096668 @ =gUnk_08123184 adds r0, r1, r4 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r2, [r6, #0x2e] adds r0, r0, r2 movs r2, #0x10 rsbs r2, r2, #0 adds r3, r2, #0 ands r0, r3 movs r2, #8 adds r5, r6, #0 adds r5, #0x70 movs r7, #0 orrs r0, r2 strh r0, [r5] adds r1, #1 adds r1, r1, r4 movs r0, #0 ldrsb r0, [r1, r0] ldrh r1, [r6, #0x32] adds r0, r0, r1 ands r0, r3 orrs r0, r2 adds r1, r6, #0 adds r1, #0x72 strh r0, [r1] ldrh r0, [r5] ldrh r1, [r1] adds r4, r6, #0 adds r4, #0x38 ldrb r2, [r4] bl sub_080002BC cmp r0, #0x19 bne _08096670 ldr r0, _0809666C @ =gUnk_0200AF00 adds r0, #0x2f movs r1, #3 strb r1, [r0] b _08096676 .align 2, 0 _08096664: .4byte gLinkEntity _08096668: .4byte gUnk_08123184 _0809666C: .4byte gUnk_0200AF00 _08096670: ldr r0, _080966F8 @ =gUnk_0200AF00 adds r0, #0x2f strb r7, [r0] _08096676: ldr r0, _080966FC @ =gLinkEntity movs r3, #0x80 lsls r3, r3, #9 adds r1, r6, #0 movs r2, #0 bl PositionRelative adds r0, r6, #0 bl sub_080002B8 cmp r0, #0x19 bne _0809669C ldrb r1, [r4] movs r0, #0xdc bl sub_0807BA8C adds r0, r6, #0 bl sub_08096A78 _0809669C: ldr r2, _08096700 @ =gLinkState adds r0, r2, #0 adds r0, #0x92 ldrh r1, [r0] movs r0, #0xc0 ands r0, r1 cmp r0, #0 beq _080966F6 ldr r0, _080966F8 @ =gUnk_0200AF00 adds r0, #0x2f ldrb r0, [r0] cmp r0, #3 bne _080966F6 movs r0, #0 strb r0, [r2, #5] movs r0, #5 strb r0, [r6, #0xc] adds r0, #0xfb strh r0, [r6, #0x24] movs r0, #0x80 lsls r0, r0, #0xa str r0, [r6, #0x20] adds r2, r6, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #8 orrs r0, r1 strb r0, [r2] ldrb r1, [r6, #0x18] movs r0, #0x31 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x10 orrs r0, r1 strb r0, [r6, #0x18] ldrb r1, [r4] movs r0, #0xdc bl sub_0807BA8C movs r0, #0x79 bl PlaySFX _080966F6: pop {r4, r5, r6, r7, pc} .align 2, 0 _080966F8: .4byte gUnk_0200AF00 _080966FC: .4byte gLinkEntity _08096700: .4byte gLinkState thumb_func_start sub_08096704 sub_08096704: @ 0x08096704 push {lr} ldr r2, _08096718 @ =gUnk_0812318C ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08096718: .4byte gUnk_0812318C thumb_func_start sub_0809671C sub_0809671C: @ 0x0809671C push {r4, lr} adds r4, r0, #0 movs r0, #0x1a bl sub_0807CD04 ldrb r0, [r4, #0xd] adds r0, #1 strb r0, [r4, #0xd] pop {r4, pc} .align 2, 0 thumb_func_start nullsub_121 nullsub_121: @ 0x08096730 bx lr .align 2, 0 thumb_func_start sub_08096734 sub_08096734: @ 0x08096734 push {lr} movs r0, #0x1a bl sub_0807CD80 pop {pc} .align 2, 0 thumb_func_start sub_08096740 sub_08096740: @ 0x08096740 push {r4, lr} adds r4, r0, #0 movs r0, #0x10 movs r1, #0 bl sub_08080964 movs r1, #0 movs r0, #1 strb r0, [r4, #0xc] strb r1, [r4, #0xd] pop {r4, pc} .align 2, 0 thumb_func_start sub_08096758 sub_08096758: @ 0x08096758 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0809677C ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #0xa bl UpdateSprite _0809677C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08096780 sub_08096780: @ 0x08096780 push {r4, r5, lr} adds r5, r0, #0 ldr r1, _080967D4 @ =gUnk_0812319C ldrb r0, [r5, #0xa] lsrs r0, r0, #1 lsls r0, r0, #1 adds r0, r0, r1 ldrh r4, [r0] adds r0, r5, #0 bl sub_080002A0 cmp r4, r0 bne _080967DC adds r0, r5, #0 bl sub_08004274 ldr r2, _080967D8 @ =gLinkState ldrb r0, [r2, #0xb] movs r1, #0x80 orrs r0, r1 strb r0, [r2, #0xb] ldrb r0, [r2, #0xa] orrs r0, r1 strb r0, [r2, #0xa] ldrb r0, [r2, #7] orrs r1, r0 strb r1, [r2, #7] ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _080967E0 movs r0, #6 strb r0, [r5, #0xc] strb r1, [r5, #0xd] adds r0, r5, #0 bl sub_080A29BC b _080967E0 .align 2, 0 _080967D4: .4byte gUnk_0812319C _080967D8: .4byte gLinkState _080967DC: movs r0, #0xc0 strb r0, [r5, #0xe] _080967E0: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080967E4 sub_080967E4: @ 0x080967E4 push {r4, r5, lr} adds r4, r0, #0 adds r0, #0x70 ldrh r5, [r0] movs r0, #0x2e ldrsh r2, [r4, r0] cmp r5, r2 bne _08096802 adds r0, r4, #0 adds r0, #0x72 ldrh r1, [r0] movs r3, #0x32 ldrsh r0, [r4, r3] cmp r1, r0 beq _0809681C _08096802: movs r0, #0x32 ldrsh r1, [r4, r0] adds r0, r4, #0 adds r0, #0x72 ldrh r3, [r0] adds r0, r2, #0 adds r2, r5, #0 bl sub_080045D4 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_0806F69C _0809681C: movs r1, #0x80 lsls r1, r1, #7 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08096830 adds r0, r4, #0 bl sub_08096A78 _08096830: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08096834 sub_08096834: @ 0x08096834 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xd] cmp r0, #2 beq _08096842 bl sub_08078B48 _08096842: ldr r0, _08096854 @ =gUnk_081231A0 ldrb r1, [r4, #0xd] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 pop {r4, pc} .align 2, 0 _08096854: .4byte gUnk_081231A0 thumb_func_start sub_08096858 sub_08096858: @ 0x08096858 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xb] bl sub_0807CCB4 movs r3, #0 movs r0, #0xf strb r0, [r5, #0xe] ldr r1, _080968BC @ =gUnk_081231AC ldrb r2, [r5, #0xa] lsls r2, r2, #0x18 lsrs r0, r2, #0x19 adds r0, r0, r1 ldrb r0, [r0] strb r0, [r5, #0xf] strb r3, [r5, #0xb] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r5, #0x18] ldrb r0, [r5, #0xd] adds r0, #1 strb r0, [r5, #0xd] cmp r2, #0 bne _080968C4 movs r0, #0xe7 lsls r0, r0, #1 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _080968C0 @ =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_0807B7D8 b _080968F0 .align 2, 0 _080968BC: .4byte gUnk_081231AC _080968C0: .4byte gRoomControls _080968C4: ldr r0, _080968F8 @ =0x000001CD movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _080968FC @ =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_0807B7D8 _080968F0: ldr r0, _08096900 @ =0x000001DB bl PlaySFX pop {r4, r5, r6, pc} .align 2, 0 _080968F8: .4byte 0x000001CD _080968FC: .4byte gRoomControls _08096900: .4byte 0x000001DB thumb_func_start sub_08096904 sub_08096904: @ 0x08096904 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08096984 ldrh r0, [r5, #0x32] subs r0, #0x10 strh r0, [r5, #0x32] ldr r1, _08096974 @ =gUnk_081231AE ldrb r0, [r5, #0xb] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08096978 @ =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_0807B7D8 ldrb r0, [r5, #0xb] adds r0, #1 strb r0, [r5, #0xb] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 ldrb r1, [r5, #0xf] cmp r0, r1 bne _08096980 ldr r2, _0809697C @ =gLinkState ldrb r1, [r2, #0xb] movs r0, #0x7f ands r0, r1 strb r0, [r2, #0xb] ldrb r0, [r5, #0xd] adds r0, #1 strb r0, [r5, #0xd] movs r0, #0x3c b _08096982 .align 2, 0 _08096974: .4byte gUnk_081231AE _08096978: .4byte gRoomControls _0809697C: .4byte gLinkState _08096980: movs r0, #0xf _08096982: strb r0, [r5, #0xe] _08096984: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_08096988 sub_08096988: @ 0x08096988 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] cmp r0, #0 beq _080969A2 subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080969A2 movs r0, #0x72 bl PlaySFX _080969A2: pop {pc} thumb_func_start sub_080969A4 sub_080969A4: @ 0x080969A4 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r0, #0 ldrb r0, [r5, #0xa] cmp r0, #0 bne _080969E8 movs r0, #0xe7 lsls r0, r0, #1 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _080969E4 @ =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 r4, r5, #0 adds r4, #0x38 ldrb r2, [r4] bl sub_0807B7D8 b _08096A14 .align 2, 0 _080969E4: .4byte gRoomControls _080969E8: ldr r0, _08096A6C @ =0x000001CD movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08096A70 @ =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 r4, r5, #0 adds r4, #0x38 ldrb r2, [r4] bl sub_0807B7D8 _08096A14: ldrb r0, [r5, #0xb] ldrb r1, [r5, #0xf] cmp r0, r1 beq _08096A64 ldr r2, _08096A74 @ =gUnk_081231B4 mov r8, r2 ldr r7, _08096A70 @ =gRoomControls movs r6, #0x3f _08096A24: ldrh r0, [r5, #0x32] subs r0, #0x10 strh r0, [r5, #0x32] ldrb r0, [r5, #0xb] lsls r0, r0, #1 add r0, r8 ldrh r0, [r0] movs r3, #0x2e ldrsh r1, [r5, r3] ldrh r2, [r7, #6] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r6 movs r3, #0x32 ldrsh r2, [r5, r3] ldrh r3, [r7, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r6 lsls r2, r2, #6 orrs r1, r2 ldrb r2, [r4] bl sub_0807B7D8 ldrb r0, [r5, #0xb] adds r0, #1 strb r0, [r5, #0xb] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 ldrb r1, [r5, #0xf] cmp r0, r1 bne _08096A24 _08096A64: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08096A6C: .4byte 0x000001CD _08096A70: .4byte gRoomControls _08096A74: .4byte gUnk_081231B4 thumb_func_start sub_08096A78 sub_08096A78: @ 0x08096A78 push {r4, r5, r6, lr} adds r4, r0, #0 movs r0, #0x1b bl sub_0807CD04 ldrb r1, [r4, #0xa] lsrs r1, r1, #1 adds r1, #8 adds r0, r4, #0 bl LoadAnimation adds r0, r4, #0 bl sub_08004168 ldrh r0, [r4, #0x32] adds r0, #4 strh r0, [r4, #0x32] movs r0, #3 strb r0, [r4, #0xc] ldr r0, _08096ACC @ =0x0000403B movs r2, #0x2e ldrsh r1, [r4, r2] ldr r3, _08096AD0 @ =gRoomControls ldrh r2, [r3, #6] subs r1, r1, r2 asrs r1, r1, #4 movs r5, #0x3f ands r1, r5 movs r6, #0x32 ldrsh r2, [r4, r6] ldrh r3, [r3, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r5 lsls r2, r2, #6 orrs r1, r2 adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer pop {r4, r5, r6, pc} .align 2, 0 _08096ACC: .4byte 0x0000403B _08096AD0: .4byte gRoomControls thumb_func_start sub_08096AD4 sub_08096AD4: @ 0x08096AD4 push {lr} ldr r2, _08096AE8 @ =gUnk_0812323C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08096AE8: .4byte gUnk_0812323C thumb_func_start sub_08096AEC sub_08096AEC: @ 0x08096AEC push {r4, r5, r6, lr} adds r4, r0, #0 bl sub_080837B0 cmp r0, #0 beq _08096BB6 ldrb r1, [r4, #0xa] movs r0, #4 ands r0, r1 cmp r0, #0 beq _08096B12 adds r1, r4, #0 adds r1, #0x7e movs r0, #1 strb r0, [r1] ldrb r1, [r4, #0xa] movs r0, #3 ands r0, r1 strb r0, [r4, #0xa] _08096B12: movs r0, #0xc0 lsls r0, r0, #2 strh r0, [r4, #0x24] ldrh r1, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x70 strh r1, [r0] ldrh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r2] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08096B90 @ =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 r6, r4, #0 adds r6, #0x38 ldrb r1, [r6] bl sub_080001DA adds r1, r4, #0 adds r1, #0x74 strh r0, [r1] ldrb r0, [r4, #0xa] strb r0, [r4, #0x1e] adds r0, r4, #0 bl sub_08096CEC cmp r0, #0 beq _08096B9C adds r0, r4, #0 adds r0, #0x7e ldrb r0, [r0] cmp r0, #0 beq _08096B94 bl sub_0805E780 b _08096BB6 .align 2, 0 _08096B90: .4byte gRoomControls _08096B94: adds r0, r4, #0 bl sub_08096E04 b _08096BB6 _08096B9C: movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldr r0, _08096BB8 @ =0x00004022 ldrh r1, [r5] ldrb r2, [r6] bl UpdateCollisionLayer _08096BB6: pop {r4, r5, r6, pc} .align 2, 0 _08096BB8: .4byte 0x00004022 thumb_func_start sub_08096BBC sub_08096BBC: @ 0x08096BBC push {r4, lr} adds r4, r0, #0 bl sub_08096CEC cmp r0, #0 beq _08096BF2 movs r0, #2 strb r0, [r4, #0xc] movs r0, #7 strb r0, [r4, #0xe] ldrb r0, [r4, #0xa] lsls r0, r0, #3 strb r0, [r4, #0x15] adds r0, r4, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x76 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer ldr r0, _08096BF4 @ =0x0000010B bl sub_08004488 _08096BF2: pop {r4, pc} .align 2, 0 _08096BF4: .4byte 0x0000010B thumb_func_start sub_08096BF8 sub_08096BF8: @ 0x08096BF8 push {r4, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08096C3A adds r0, r4, #0 bl sub_08096E04 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x70 ldrh r0, [r0] strh r0, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x72 ldrh r0, [r0] strh r0, [r4, #0x32] adds r0, r4, #0 adds r0, #0x7e ldrb r0, [r0] cmp r0, #0 beq _08096C3A bl sub_0805E780 _08096C3A: pop {r4, pc} thumb_func_start sub_08096C3C sub_08096C3C: @ 0x08096C3C push {r4, lr} adds r4, r0, #0 adds r0, #0x7e ldrb r0, [r0] cmp r0, #0 beq _08096C56 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _08096CAE _08096C56: ldr r0, _08096C80 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 lsls r1, r1, #5 ands r0, r1 cmp r0, #0 beq _08096C92 ldrb r2, [r4, #0xa] lsls r1, r2, #1 ldr r0, _08096C84 @ =gLinkEntity ldrb r0, [r0, #0x14] cmp r1, r0 bne _08096C88 adds r0, r4, #0 adds r1, r2, #0 bl sub_08083734 cmp r0, #0 beq _08096CAE b _08096C9C .align 2, 0 _08096C80: .4byte gLinkState _08096C84: .4byte gLinkEntity _08096C88: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 b _08096C98 _08096C92: adds r0, r4, #0 bl sub_08096D84 _08096C98: cmp r0, #0 bne _08096CAE _08096C9C: movs r0, #4 strb r0, [r4, #0xc] ldrb r1, [r4, #0xa] adds r0, r4, #0 adds r0, #0x76 ldrh r2, [r0] adds r0, r4, #0 bl sub_080836DC _08096CAE: pop {r4, pc} thumb_func_start sub_08096CB0 sub_08096CB0: @ 0x08096CB0 push {r4, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08096CE6 movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x70 ldrh r0, [r0] strh r0, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x72 ldrh r0, [r0] strh r0, [r4, #0x32] ldrb r1, [r4, #0xa] adds r0, r4, #0 bl sub_08083814 ldr r0, _08096CE8 @ =0x0000010B bl sub_08004488 _08096CE6: pop {r4, pc} .align 2, 0 _08096CE8: .4byte 0x0000010B thumb_func_start sub_08096CEC sub_08096CEC: @ 0x08096CEC push {r4, r5, lr} adds r4, r0, #0 adds r0, #0x7e ldrb r0, [r0] cmp r0, #0 beq _08096D06 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _08096D60 _08096D06: ldr r0, _08096D40 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 lsls r1, r1, #5 ands r0, r1 cmp r0, #0 beq _08096D64 ldr r3, _08096D44 @ =gLinkEntity ldrb r2, [r4, #0xa] lsls r0, r2, #1 ldrb r1, [r3, #0x14] eors r0, r1 movs r1, #2 ands r0, r1 cmp r0, #0 bne _08096D64 movs r0, #1 ands r2, r0 cmp r2, #0 beq _08096D48 movs r1, #0x32 ldrsh r0, [r3, r1] movs r2, #0x32 ldrsh r1, [r4, r2] movs r5, #0x2e ldrsh r2, [r3, r5] movs r5, #0x2e ldrsh r3, [r4, r5] b _08096D58 .align 2, 0 _08096D40: .4byte gLinkState _08096D44: .4byte gLinkEntity _08096D48: movs r1, #0x2e ldrsh r0, [r3, r1] movs r2, #0x2e ldrsh r1, [r4, r2] movs r5, #0x32 ldrsh r2, [r3, r5] movs r5, #0x32 ldrsh r3, [r4, r5] _08096D58: bl sub_08096D68 cmp r0, #0 beq _08096D64 _08096D60: movs r0, #1 b _08096D66 _08096D64: movs r0, #0 _08096D66: pop {r4, r5, pc} thumb_func_start sub_08096D68 sub_08096D68: @ 0x08096D68 push {lr} subs r0, r0, r1 adds r0, #8 cmp r0, #0x10 bhi _08096D7E subs r0, r2, r3 adds r0, #0x30 cmp r0, #0x60 bhi _08096D7E movs r0, #1 b _08096D80 _08096D7E: movs r0, #0 _08096D80: pop {pc} .align 2, 0 thumb_func_start sub_08096D84 sub_08096D84: @ 0x08096D84 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xa] cmp r0, #1 beq _08096DB4 cmp r0, #1 bgt _08096D98 cmp r0, #0 beq _08096DA2 b _08096E00 _08096D98: cmp r0, #2 beq _08096DC8 cmp r0, #3 beq _08096DE4 b _08096E00 _08096DA2: movs r0, #0x32 ldrsh r1, [r1, r0] ldr r0, _08096DB0 @ =gLinkEntity movs r2, #0x32 ldrsh r0, [r0, r2] b _08096DEE .align 2, 0 _08096DB0: .4byte gLinkEntity _08096DB4: ldr r0, _08096DC4 @ =gLinkEntity movs r2, #0x2e ldrsh r0, [r0, r2] adds r0, #0xa movs r2, #0x2e ldrsh r1, [r1, r2] b _08096DD4 .align 2, 0 _08096DC4: .4byte gLinkEntity _08096DC8: ldr r0, _08096DE0 @ =gLinkEntity movs r2, #0x32 ldrsh r0, [r0, r2] adds r0, #0xa movs r2, #0x32 ldrsh r1, [r1, r2] _08096DD4: subs r0, r0, r1 cmp r0, #0x64 bhi _08096E00 movs r0, #1 b _08096E02 .align 2, 0 _08096DE0: .4byte gLinkEntity _08096DE4: movs r0, #0x2e ldrsh r1, [r1, r0] ldr r0, _08096DFC @ =gLinkEntity movs r2, #0x2e ldrsh r0, [r0, r2] _08096DEE: subs r0, #0xa subs r1, r1, r0 cmp r1, #0x64 bhi _08096E00 movs r0, #1 b _08096E02 .align 2, 0 _08096DFC: .4byte gLinkEntity _08096E00: movs r0, #0 _08096E02: pop {pc} thumb_func_start sub_08096E04 sub_08096E04: @ 0x08096E04 movs r1, #3 strb r1, [r0, #0xc] movs r1, #8 strb r1, [r0, #0xe] bx lr .align 2, 0 thumb_func_start sub_08096E10 sub_08096E10: @ 0x08096E10 push {lr} ldr r2, _08096E24 @ =gUnk_08123250 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08096E24: .4byte gUnk_08123250 thumb_func_start sub_08096E28 sub_08096E28: @ 0x08096E28 push {r4, r5, lr} adds r4, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 adds r5, r0, #0 cmp r5, #0 bne _08096EBC movs r2, #1 movs r3, #1 strb r3, [r4, #0xc] movs r0, #0x80 strh r0, [r4, #0x24] ldrb r1, [r4, #0x11] subs r0, #0x90 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #8 orrs r0, r1 strb r0, [r2] ldrb r1, [r4, #0x18] movs r0, #0x31 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x10 orrs r0, r1 strb r0, [r4, #0x18] adds r1, r4, #0 adds r1, #0x63 movs r0, #4 strb r0, [r1] ldr r0, _08096EB4 @ =gUnk_080FD1F4 str r0, [r4, #0x48] strb r3, [r4, #0x16] adds r0, r4, #0 adds r0, #0x72 strh r5, [r0] adds r0, #0xb ldrb r0, [r0] lsrs r0, r0, #4 subs r1, #0x2b strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r0, r4, #0 bl sub_080970F4 ldr r1, _08096EB8 @ =gUnk_08123264 ldrb r0, [r4, #0xa] adds r0, r0, r1 ldrb r0, [r0] strb r0, [r4, #0x1e] b _08096F04 .align 2, 0 _08096EB4: .4byte gUnk_080FD1F4 _08096EB8: .4byte gUnk_08123264 _08096EBC: adds r0, r4, #0 adds r0, #0x7c ldrb r2, [r0] adds r0, #1 ldrb r3, [r0] movs r1, #0xf adds r0, r1, #0 ands r0, r3 lsls r0, r0, #8 ldr r3, _08096F08 @ =gRoomControls orrs r2, r0 ldrh r0, [r3, #6] adds r2, r2, r0 strh r2, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x7e ldrb r0, [r0] movs r2, #0x7f adds r2, r2, r4 mov ip, r2 ldrb r2, [r2] ands r1, r2 lsls r1, r1, #8 orrs r0, r1 ldrh r3, [r3, #8] adds r0, r0, r3 strh r0, [r4, #0x32] mov r5, ip ldrb r0, [r5] lsrs r0, r0, #4 adds r1, r4, #0 adds r1, #0x38 strb r0, [r1] adds r0, r4, #0 bl sub_080971E0 _08096F04: pop {r4, r5, pc} .align 2, 0 _08096F08: .4byte gRoomControls thumb_func_start sub_08096F0C sub_08096F0C: @ 0x08096F0C push {r4, lr} adds r4, r0, #0 bl sub_08097194 cmp r0, #0 bne _08096F2E adds r0, r4, #0 bl sub_08097008 cmp r0, #0 beq _08096F28 movs r0, #3 strb r0, [r4, #0xc] b _08096F2E _08096F28: adds r0, r4, #0 bl sub_08078930 _08096F2E: pop {r4, pc} thumb_func_start sub_08096F30 sub_08096F30: @ 0x08096F30 push {lr} adds r2, r0, #0 adds r0, #0x76 ldrh r0, [r0] cmp r0, #0 beq _08096F44 adds r0, r2, #0 bl sub_08097144 b _08096F62 _08096F44: ldr r0, _08096F64 @ =gLinkState ldrb r0, [r0, #5] cmp r0, #0 bne _08096F50 movs r0, #6 strb r0, [r2, #0xd] _08096F50: ldr r0, _08096F68 @ =gUnk_0812326C ldrb r1, [r2, #0xd] subs r1, #5 lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 _08096F62: pop {pc} .align 2, 0 _08096F64: .4byte gLinkState _08096F68: .4byte gUnk_0812326C thumb_func_start sub_08096F6C sub_08096F6C: @ 0x08096F6C push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x72 ldrh r0, [r1] cmp r0, #0 bne _08096F98 movs r0, #1 strh r0, [r1] ldr r1, _08096FD8 @ =gLinkEntity ldrb r0, [r1, #0x14] ldr r2, _08096FDC @ =gUnk_08123274 adds r0, r0, r2 movs r2, #0 ldrsb r2, [r0, r2] lsls r2, r2, #0x10 movs r3, #1 ldrsb r3, [r0, r3] lsls r3, r3, #0x10 adds r0, r4, #0 bl PositionRelative _08096F98: adds r0, r4, #0 bl sub_08097008 bl sub_080896B0 cmp r0, #0 beq _08096FD4 ldr r2, _08096FE0 @ =gLinkState movs r3, #0 movs r0, #0x10 strb r0, [r2, #0xc] adds r1, r2, #0 adds r1, #0x38 movs r0, #0x20 strb r0, [r1] ldr r0, [r2, #0x30] movs r1, #1 orrs r0, r1 str r0, [r2, #0x30] ldr r0, _08096FD8 @ =gLinkEntity strh r3, [r0, #0x2c] strh r3, [r0, #0x30] ldrb r0, [r0, #0x14] movs r1, #4 eors r0, r1 lsls r0, r0, #2 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_08097098 _08096FD4: pop {r4, pc} .align 2, 0 _08096FD8: .4byte gLinkEntity _08096FDC: .4byte gUnk_08123274 _08096FE0: .4byte gLinkState thumb_func_start sub_08096FE4 sub_08096FE4: @ 0x08096FE4 movs r2, #0 movs r1, #1 strb r1, [r0, #0xc] adds r0, #0x72 strh r2, [r0] bx lr thumb_func_start sub_08096FF0 sub_08096FF0: @ 0x08096FF0 push {r4, lr} adds r4, r0, #0 bl sub_08097144 cmp r0, #0 beq _08097000 movs r0, #1 strb r0, [r4, #0xc] _08097000: pop {r4, pc} .align 2, 0 thumb_func_start nullsub_122 nullsub_122: @ 0x08097004 bx lr .align 2, 0 thumb_func_start sub_08097008 sub_08097008: @ 0x08097008 push {r4, r5, lr} adds r5, r0, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r5, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002B0 adds r4, r0, #0 ldr r0, _08097048 @ =0x00004036 cmp r4, r0 beq _08097070 adds r0, r4, #0 bl sub_08097074 cmp r0, #1 beq _0809704C cmp r0, #2 beq _08097062 movs r0, #0xf movs r1, #4 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _0809706A adds r0, r5, #0 bl CopyPosition b _0809706A .align 2, 0 _08097048: .4byte 0x00004036 _0809704C: adds r0, r4, #0 subs r0, #0x37 movs r1, #3 ands r0, r1 lsls r0, r0, #3 strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_08097098 movs r0, #1 b _08097072 _08097062: adds r0, r5, #0 adds r0, #0x70 strh r4, [r0] b _08097070 _0809706A: adds r0, r5, #0 bl sub_0805E7BC _08097070: movs r0, #0 _08097072: pop {r4, r5, pc} thumb_func_start sub_08097074 sub_08097074: @ 0x08097074 push {lr} adds r2, r0, #0 ldr r1, _0809707C @ =gUnk_0812327C b _0809708C .align 2, 0 _0809707C: .4byte gUnk_0812327C _08097080: ldrh r0, [r1] cmp r0, r2 bne _0809708A ldrh r0, [r1, #2] b _08097094 _0809708A: adds r1, #4 _0809708C: ldrh r0, [r1] cmp r0, #0 bne _08097080 movs r0, #0 _08097094: pop {pc} .align 2, 0 thumb_func_start sub_08097098 sub_08097098: @ 0x08097098 push {r4, r5, r6, lr} adds r6, r0, #0 adds r1, r6, #0 adds r1, #0x76 movs r0, #0x20 strh r0, [r1] adds r0, #0xef bl sub_08004488 adds r0, r6, #0 adds r0, #0x70 ldrh r0, [r0] adds r5, r6, #0 adds r5, #0x74 ldrh r1, [r5] adds r4, r6, #0 adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer ldr r1, _080970F0 @ =gUnk_080B4488 ldrb r0, [r6, #0x15] lsrs r0, r0, #3 lsls r0, r0, #1 adds r0, r0, r1 movs r1, #0 ldrsh r0, [r0, r1] ldrh r5, [r5] adds r0, r0, r5 ldrb r1, [r4] bl sub_080002B0 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0x79 beq _080970E4 cmp r0, #0x77 bne _080970EC _080970E4: adds r1, r6, #0 adds r1, #0x63 movs r0, #2 strb r0, [r1] _080970EC: pop {r4, r5, r6, pc} .align 2, 0 _080970F0: .4byte gUnk_080B4488 thumb_func_start sub_080970F4 sub_080970F4: @ 0x080970F4 push {r4, r5, r6, lr} adds r6, r0, #0 movs r0, #0x2e ldrsh r1, [r6, r0] ldr r2, _0809713C @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r4, #0x32 ldrsh r0, [r6, r4] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r4, r6, #0 adds r4, #0x74 strh r1, [r4] ldrh r0, [r4] adds r5, r6, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080001DA adds r1, r6, #0 adds r1, #0x70 strh r0, [r1] ldr r0, _08097140 @ =0x00004036 ldrh r1, [r4] ldrb r2, [r5] bl UpdateCollisionLayer pop {r4, r5, r6, pc} .align 2, 0 _0809713C: .4byte gRoomControls _08097140: .4byte 0x00004036 thumb_func_start sub_08097144 sub_08097144: @ 0x08097144 push {r4, lr} adds r4, r0, #0 bl sub_0806F69C adds r0, r4, #0 bl sub_0800445C adds r0, r4, #0 bl sub_080002B8 cmp r0, #0x19 bne _08097164 adds r1, r4, #0 adds r1, #0x63 movs r0, #2 strb r0, [r1] _08097164: adds r1, r4, #0 adds r1, #0x76 ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _08097190 adds r0, r4, #0 bl sub_08097194 cmp r0, #0 bne _08097190 adds r1, r4, #0 adds r1, #0x63 movs r0, #4 strb r0, [r1] adds r0, r4, #0 bl sub_080970F4 movs r0, #1 b _08097192 _08097190: movs r0, #0 _08097192: pop {r4, pc} thumb_func_start sub_08097194 sub_08097194: @ 0x08097194 push {r4, lr} adds r4, r0, #0 bl sub_0800442E cmp r0, #0 beq _080971A4 movs r0, #1 b _080971DE _080971A4: adds r0, r4, #0 bl sub_080002A0 adds r1, r0, #0 subs r0, #0x71 cmp r0, #1 bls _080971B8 ldr r0, _080971D4 @ =0x00004020 cmp r1, r0 bne _080971DC _080971B8: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 ldr r0, _080971D8 @ =0x0000010B bl sub_08004488 adds r0, r4, #0 bl sub_080971E0 movs r0, #1 b _080971DE .align 2, 0 _080971D4: .4byte 0x00004020 _080971D8: .4byte 0x0000010B _080971DC: movs r0, #0 _080971DE: pop {r4, pc} thumb_func_start sub_080971E0 sub_080971E0: @ 0x080971E0 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0xf movs r1, #0x11 movs r2, #0x40 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08097202 ldr r2, _0809727C @ =0xFFF80000 movs r3, #0x80 lsls r3, r3, #0xa adds r0, r5, #0 adds r1, r4, #0 bl PositionRelative _08097202: movs r0, #0xf movs r1, #0x11 movs r2, #0x40 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08097222 movs r2, #0x80 lsls r2, r2, #0xc movs r3, #0x80 lsls r3, r3, #0xa adds r0, r5, #0 adds r1, r4, #0 bl PositionRelative _08097222: ldrb r0, [r5, #0xa] cmp r0, #1 beq _08097284 cmp r0, #1 ble _08097234 cmp r0, #2 beq _080972C4 cmp r0, #3 beq _08097304 _08097234: movs r0, #4 strb r0, [r5, #0xc] movs r0, #1 strb r0, [r5, #0x1e] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] movs r0, #0x2e ldrsh r1, [r5, r0] ldr r2, _08097280 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r4, #0x32 ldrsh r0, [r5, r4] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r0, r5, #0 adds r0, #0x38 ldrb r2, [r0] movs r0, #0 bl UpdateCollisionLayer _08097274: bl sub_0805E780 b _08097346 .align 2, 0 _0809727C: .4byte 0xFFF80000 _08097280: .4byte gRoomControls _08097284: movs r1, #0x2e ldrsh r0, [r5, r1] ldr r3, _080972C0 @ =gRoomControls ldrh r1, [r3, #6] subs r0, r0, r1 asrs r4, r0, #4 movs r2, #0x3f ands r4, r2 movs r1, #0x32 ldrsh r0, [r5, r1] ldrh r1, [r3, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r4, r0 adds r0, r4, #0 bl sub_08097348 cmp r0, #0 bne _08097274 adds r0, r5, #0 adds r0, #0x38 ldrb r2, [r0] movs r0, #0x73 adds r1, r4, #0 bl sub_0807B314 b _08097274 .align 2, 0 _080972C0: .4byte gRoomControls _080972C4: movs r0, #0x2f movs r1, #0 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08097274 ldrh r2, [r5, #0x2e] movs r1, #0x10 rsbs r1, r1, #0 adds r0, r1, #0 ands r0, r2 adds r0, #8 strh r0, [r4, #0x2e] ldrh r0, [r5, #0x32] ands r1, r0 adds r1, #8 strh r1, [r4, #0x32] adds r0, r5, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] adds r0, r5, #0 adds r0, #0x84 ldrh r1, [r0] adds r0, r4, #0 adds r0, #0x86 strh r1, [r0] b _08097274 _08097304: movs r0, #0x2f movs r1, #1 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08097342 ldrh r2, [r5, #0x2e] movs r1, #0x10 rsbs r1, r1, #0 adds r0, r1, #0 ands r0, r2 adds r0, #8 strh r0, [r4, #0x2e] ldrh r0, [r5, #0x32] ands r1, r0 adds r1, #8 strh r1, [r4, #0x32] adds r0, r5, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] adds r0, r5, #0 adds r0, #0x84 ldrh r1, [r0] adds r0, r4, #0 adds r0, #0x86 strh r1, [r0] _08097342: bl sub_0805E780 _08097346: pop {r4, r5, pc} thumb_func_start sub_08097348 sub_08097348: @ 0x08097348 push {lr} adds r3, r0, #0 ldr r1, _08097360 @ =gUnk_02017660 movs r2, #0 _08097350: ldrh r0, [r1, #4] cmp r0, r3 bne _08097364 ldrb r0, [r1, #1] bl sub_0807CBD0 b _0809736E .align 2, 0 _08097360: .4byte gUnk_02017660 _08097364: adds r2, #1 adds r1, #8 cmp r2, #7 bls _08097350 movs r0, #0 _0809736E: pop {pc} thumb_func_start sub_08097370 sub_08097370: @ 0x08097370 push {lr} ldr r2, _08097384 @ =gUnk_08123298 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08097384: .4byte gUnk_08123298 thumb_func_start sub_08097388 sub_08097388: @ 0x08097388 push {r4, lr} adds r4, r0, #0 bl sub_0806FBD8 cmp r0, #0 beq _080973D4 ldrb r0, [r4, #0xa] lsls r0, r0, #2 ldr r1, _080973D8 @ =gUnk_081232A0 adds r0, r0, r1 ldrb r1, [r0] strb r1, [r4, #0xb] ldrb r2, [r0, #3] adds r1, r4, #0 adds r1, #0x40 strb r2, [r1] ldr r2, [r4, #0x48] ldrb r1, [r0, #1] strb r1, [r2, #6] ldr r1, [r4, #0x48] ldrb r0, [r0, #2] strb r0, [r1, #7] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r1, r4, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #3 movs r0, #0x91 strb r0, [r1] subs r1, #4 movs r0, #2 strb r0, [r1] movs r0, #1 strb r0, [r4, #0xc] _080973D4: pop {r4, pc} .align 2, 0 _080973D8: .4byte gUnk_081232A0 thumb_func_start sub_080973DC sub_080973DC: @ 0x080973DC adds r0, #0x41 movs r1, #0 strb r1, [r0] bx lr thumb_func_start sub_080973E4 sub_080973E4: @ 0x080973E4 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0809741E movs r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4, #0xa] strb r0, [r4, #0x1e] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip bl sub_08052660 cmp r0, #0 beq _0809741E adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r2] _0809741E: pop {r4, pc} thumb_func_start sub_08097420 sub_08097420: @ 0x08097420 push {lr} ldr r2, _08097434 @ =gUnk_081232A4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08097434: .4byte gUnk_081232A4 thumb_func_start sub_08097438 sub_08097438: @ 0x08097438 push {r4, lr} adds r4, r0, #0 movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r0, [r4, #0xa] adds r1, r0, #0 adds r1, #0xb strb r1, [r4, #0x1e] lsls r0, r0, #0x18 cmp r0, #0 beq _080974A2 adds r0, r4, #0 bl sub_08004168 ldr r1, _08097494 @ =gLinkEntity ldrb r0, [r1, #0x1b] movs r2, #0xc0 orrs r0, r2 strb r0, [r1, #0x1b] adds r1, #0x29 ldrb r1, [r1] movs r2, #7 movs r0, #7 ands r0, r1 cmp r0, #7 beq _08097498 lsls r1, r1, #0x1d lsrs r1, r1, #0x1d adds r1, #1 adds r3, r4, #0 adds r3, #0x29 ands r1, r2 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] b _080974A2 .align 2, 0 _08097494: .4byte gLinkEntity _08097498: adds r1, r4, #0 adds r1, #0x29 ldrb r0, [r1] orrs r0, r2 strb r0, [r1] _080974A2: pop {r4, pc} thumb_func_start sub_080974A4 sub_080974A4: @ 0x080974A4 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0 bne _08097554 ldr r3, _08097540 @ =gLinkEntity ldr r0, [r3, #0x34] cmp r0, #0 bne _080974E8 ldr r2, _08097544 @ =gLinkState ldrb r1, [r2, #0x1e] movs r0, #0x40 ands r0, r1 cmp r0, #0 bne _080974D6 ldrb r0, [r2, #0x12] cmp r0, #0x11 bne _080974D6 ldrb r0, [r3, #0xc] cmp r0, #1 beq _080974FA cmp r0, #0x18 beq _080974FA cmp r0, #4 beq _080974FA _080974D6: ldr r1, _08097540 @ =gLinkEntity ldr r0, [r1, #0x34] cmp r0, #0 bne _080974E8 adds r0, r1, #0 movs r1, #0x52 movs r2, #0 bl CreateFx _080974E8: ldr r2, _08097540 @ =gLinkEntity ldrb r1, [r2, #0x1b] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r2, #0x1b] bl sub_0805E780 _080974FA: ldr r2, _08097540 @ =gLinkEntity ldr r0, [r2, #0x2c] str r0, [r4, #0x2c] ldr r0, [r2, #0x30] str r0, [r4, #0x30] ldr r0, _08097544 @ =gLinkState ldrb r0, [r0, #2] cmp r0, #0 bne _08097584 ldrb r0, [r2, #0x1b] movs r1, #0xc0 orrs r0, r1 strb r0, [r2, #0x1b] adds r0, r2, #0 adds r0, #0x29 ldrb r1, [r0] movs r2, #7 movs r0, #7 ands r0, r1 cmp r0, #7 beq _08097548 lsls r1, r1, #0x1d lsrs r1, r1, #0x1d adds r1, #1 adds r3, r4, #0 adds r3, #0x29 ands r1, r2 ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] b _08097584 .align 2, 0 _08097540: .4byte gLinkEntity _08097544: .4byte gLinkState _08097548: adds r1, r4, #0 adds r1, #0x29 ldrb r0, [r1] orrs r0, r2 strb r0, [r1] b _08097584 _08097554: ldr r2, _08097570 @ =gLinkEntity ldrb r0, [r2, #0xc] cmp r0, #0x1e beq _08097584 adds r0, r4, #0 adds r0, #0x38 ldrb r0, [r0] cmp r0, #1 bne _08097574 ldrb r0, [r2, #0x1b] movs r1, #0x3f ands r1, r0 movs r0, #0x80 b _0809757C .align 2, 0 _08097570: .4byte gLinkEntity _08097574: ldrb r0, [r2, #0x1b] movs r1, #0x3f ands r1, r0 movs r0, #0x40 _0809757C: orrs r1, r0 strb r1, [r2, #0x1b] bl sub_0805E780 _08097584: pop {r4, pc} .align 2, 0 thumb_func_start sub_08097588 sub_08097588: @ 0x08097588 push {lr} ldr r2, _0809759C @ =gUnk_081232AC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809759C: .4byte gUnk_081232AC thumb_func_start sub_080975A0 sub_080975A0: @ 0x080975A0 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r4, r0, #0 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] ldrb r0, [r4, #0xa] strb r0, [r4, #0x1e] ldrb r1, [r4, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] movs r1, #0x2e ldrsh r0, [r4, r1] ldr r2, _08097690 @ =gRoomControls mov r8, r2 ldrh r1, [r2, #6] subs r0, r0, r1 asrs r5, r0, #4 movs r6, #0x3f ands r5, r6 movs r1, #0x32 ldrsh r0, [r4, r1] ldrh r1, [r2, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r6 lsls r0, r0, #6 orrs r5, r0 adds r0, r5, #0 subs r0, #0x41 adds r7, r4, #0 adds r7, #0x38 ldrb r1, [r7] bl sub_080001DA adds r1, r4, #0 adds r1, #0x6a strh r0, [r1] adds r0, r5, #0 subs r0, #0x40 ldrb r1, [r7] bl sub_080001DA adds r1, r4, #0 adds r1, #0x6c strh r0, [r1] adds r0, r5, #0 subs r0, #0x3f ldrb r1, [r7] bl sub_080001DA adds r1, r4, #0 adds r1, #0x6e strh r0, [r1] subs r0, r5, #1 ldrb r1, [r7] bl sub_080001DA adds r1, r4, #0 adds r1, #0x70 strh r0, [r1] ldrb r1, [r7] adds r0, r5, #0 bl sub_080001DA adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] adds r0, r5, #1 ldrb r1, [r7] bl sub_080001DA adds r1, r4, #0 adds r1, #0x74 strh r0, [r1] adds r0, r5, #0 adds r0, #0x3f ldrb r1, [r7] bl sub_080001DA adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] adds r0, r5, #0 adds r0, #0x40 ldrb r1, [r7] bl sub_080001DA adds r1, r4, #0 adds r1, #0x78 strh r0, [r1] adds r0, r5, #0 adds r0, #0x41 ldrb r1, [r7] bl sub_080001DA adds r1, r4, #0 adds r1, #0x7a strh r0, [r1] adds r0, r4, #0 bl sub_0809798C cmp r0, #0 beq _080976A2 ldrb r0, [r4, #0xa] cmp r0, #0 bne _08097694 ldrh r0, [r4, #0x32] subs r0, #0x16 b _08097698 .align 2, 0 _08097690: .4byte gRoomControls _08097694: ldrh r0, [r4, #0x32] subs r0, #0x10 _08097698: strh r0, [r4, #0x32] adds r0, r4, #0 bl sub_080977F4 b _08097722 _080976A2: movs r0, #1 strb r0, [r4, #0xc] movs r2, #0x2e ldrsh r0, [r4, r2] mov r2, r8 ldrh r1, [r2, #6] subs r0, r0, r1 asrs r5, r0, #4 ands r5, r6 movs r1, #0x32 ldrsh r0, [r4, r1] ldrh r1, [r2, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r6 lsls r0, r0, #6 orrs r5, r0 adds r0, r4, #0 adds r0, #0x68 strh r5, [r0] ldr r1, _080976FC @ =gUnk_081232DE ldrb r0, [r4, #0xb] lsls r0, r0, #1 adds r0, r0, r1 ldrh r6, [r0] ldrb r0, [r4, #0xa] cmp r0, #0 bne _08097704 ldr r0, _08097700 @ =gUnk_080FD578 str r0, [r4, #0x48] subs r1, r5, #1 ldrb r2, [r7] adds r0, r6, #0 bl UpdateCollisionLayer ldrb r2, [r7] adds r0, r6, #0 adds r1, r5, #0 bl UpdateCollisionLayer ldrh r0, [r4, #0x32] adds r0, #2 strh r0, [r4, #0x32] b _08097722 .align 2, 0 _080976FC: .4byte gUnk_081232DE _08097700: .4byte gUnk_080FD578 _08097704: ldr r0, _08097728 @ =gUnk_080FD570 str r0, [r4, #0x48] ldrb r2, [r7] adds r0, r6, #0 adds r1, r5, #0 bl UpdateCollisionLayer ldrb r0, [r4, #0xb] cmp r0, #2 bne _08097722 ldr r0, _0809772C @ =gUnk_081232C0 ldrb r2, [r7] adds r1, r5, #0 bl sub_0801AF18 _08097722: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _08097728: .4byte gUnk_080FD570 _0809772C: .4byte gUnk_081232C0 thumb_func_start sub_08097730 sub_08097730: @ 0x08097730 push {r4, lr} adds r4, r0, #0 bl sub_0809785C cmp r0, #0 beq _08097744 ldrb r1, [r4, #0xe] adds r0, r4, #0 bl sub_0805E4E0 _08097744: pop {r4, pc} .align 2, 0 thumb_func_start sub_08097748 sub_08097748: @ 0x08097748 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xd] cmp r0, #0 bne _08097774 ldrb r0, [r2, #0xf] subs r0, #1 strb r0, [r2, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _0809779A movs r0, #1 strb r0, [r2, #0xd] movs r0, #0x78 strb r0, [r2, #0xf] ldr r1, _08097770 @ =gRoomControls str r2, [r1, #0x30] movs r0, #2 strb r0, [r1, #0xe] b _0809779A .align 2, 0 _08097770: .4byte gRoomControls _08097774: ldrb r0, [r2, #0xf] subs r0, #1 strb r0, [r2, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _0809779A movs r0, #3 strb r0, [r2, #0xc] movs r0, #0x60 strb r0, [r2, #0xe] movs r0, #0x14 strb r0, [r2, #0xf] adds r0, r2, #0 movs r1, #0x60 bl sub_0805E4E0 ldr r0, _0809779C @ =0x0000010F bl PlaySFX _0809779A: pop {pc} .align 2, 0 _0809779C: .4byte 0x0000010F thumb_func_start sub_080977A0 sub_080977A0: @ 0x080977A0 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] cmp r0, #0 beq _080977BC subs r0, #1 strb r0, [r4, #0xe] adds r0, r4, #0 bl sub_0806F69C adds r0, r4, #0 bl sub_0800445C b _080977E4 _080977BC: ldrb r0, [r4, #0xf] cmp r0, #0 beq _080977C8 subs r0, #1 strb r0, [r4, #0xf] b _080977E4 _080977C8: movs r0, #0x72 bl sub_08004488 adds r0, r4, #0 bl sub_080977F4 ldrb r0, [r4, #0xa] cmp r0, #0 bne _080977E4 ldr r0, _080977E8 @ =gRoomControls ldr r1, _080977EC @ =gLinkEntity str r1, [r0, #0x30] movs r1, #4 strb r1, [r0, #0xe] _080977E4: pop {r4, pc} .align 2, 0 _080977E8: .4byte gRoomControls _080977EC: .4byte gLinkEntity thumb_func_start nullsub_528 nullsub_528: @ 0x080977F0 bx lr .align 2, 0 thumb_func_start sub_080977F4 sub_080977F4: @ 0x080977F4 push {r4, r5, r6, r7, lr} adds r5, r0, #0 movs r1, #0 movs r0, #4 strb r0, [r5, #0xc] adds r0, r5, #0 adds r0, #0x63 strb r1, [r0] movs r1, #0x2e ldrsh r0, [r5, r1] ldr r3, _08097854 @ =gRoomControls ldrh r1, [r3, #6] subs r0, r0, r1 asrs r4, r0, #4 movs r2, #0x3f ands r4, r2 movs r1, #0x32 ldrsh r0, [r5, r1] ldrh r1, [r3, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r4, r0 ldr r7, _08097858 @ =0x00004022 adds r6, r5, #0 adds r6, #0x38 ldrb r2, [r6] adds r0, r7, #0 adds r1, r4, #0 bl UpdateCollisionLayer ldrb r0, [r5, #0xa] cmp r0, #0 bne _08097844 subs r1, r4, #1 ldrb r2, [r6] adds r0, r7, #0 bl UpdateCollisionLayer _08097844: adds r1, r5, #0 adds r1, #0x86 ldrh r0, [r1] cmp r0, #0 beq _08097852 bl sub_0807CCC8 _08097852: pop {r4, r5, r6, r7, pc} .align 2, 0 _08097854: .4byte gRoomControls _08097858: .4byte 0x00004022 thumb_func_start sub_0809785C sub_0809785C: @ 0x0809785C push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r4, [r5, #0xa] cmp r4, #0 beq _08097948 ldrb r0, [r5, #0xb] cmp r0, #0 bne _0809786E b _08097986 _0809786E: adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 adds r4, r5, #0 adds r4, #0x68 adds r6, r5, #0 adds r6, #0x38 cmp r0, #0 bne _08097892 ldrh r0, [r4] ldrb r1, [r6] bl sub_080002B0 ldr r1, _08097940 @ =0x0000403F cmp r0, r1 bne _08097986 _08097892: movs r1, #0 movs r0, #3 strb r0, [r5, #0xc] movs r0, #0x40 strb r0, [r5, #0xe] strb r1, [r5, #0xf] strb r1, [r5, #0x15] strh r0, [r5, #0x24] ldrh r4, [r4] adds r0, r5, #0 adds r0, #0x72 ldrh r0, [r0] ldrb r2, [r6] adds r1, r4, #0 bl sub_0807B9B8 ldrb r0, [r5, #0xb] cmp r0, #2 bne _08097934 adds r0, r5, #0 adds r0, #0x6a ldrh r0, [r0] adds r1, r4, #0 subs r1, #0x41 ldrb r2, [r6] bl sub_0807B9B8 adds r0, r5, #0 adds r0, #0x6c ldrh r0, [r0] adds r1, r4, #0 subs r1, #0x40 ldrb r2, [r6] bl sub_0807B9B8 adds r0, r5, #0 adds r0, #0x6e ldrh r0, [r0] adds r1, r4, #0 subs r1, #0x3f ldrb r2, [r6] bl sub_0807B9B8 adds r0, r5, #0 adds r0, #0x70 ldrh r0, [r0] subs r1, r4, #1 ldrb r2, [r6] bl sub_0807B9B8 adds r0, r5, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r4, #1 ldrb r2, [r6] bl sub_0807B9B8 adds r0, r5, #0 adds r0, #0x76 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x3f ldrb r2, [r6] bl sub_0807B9B8 adds r0, r5, #0 adds r0, #0x78 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x40 ldrb r2, [r6] bl sub_0807B9B8 adds r0, r5, #0 adds r0, #0x7a ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x41 ldrb r2, [r6] bl sub_0807B9B8 _08097934: ldr r0, _08097944 @ =0x0000010F bl PlaySFX movs r0, #1 b _08097988 .align 2, 0 _08097940: .4byte 0x0000403F _08097944: .4byte 0x0000010F _08097948: adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08097986 movs r0, #2 strb r0, [r5, #0xc] strb r4, [r5, #0xd] movs r0, #0xf0 strb r0, [r5, #0xe] movs r0, #0x3c strb r0, [r5, #0xf] strb r4, [r5, #0x15] movs r0, #0x40 strh r0, [r5, #0x24] adds r4, r5, #0 adds r4, #0x68 ldrh r0, [r4] adds r5, #0x38 ldrb r1, [r5] bl sub_0807BA8C ldrh r0, [r4] subs r0, #1 ldrb r1, [r5] bl sub_0807BA8C movs r0, #1 b _08097988 _08097986: movs r0, #0 _08097988: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0809798C sub_0809798C: @ 0x0809798C push {r4, lr} adds r1, r0, #0 movs r4, #0 ldrb r0, [r1, #0xa] cmp r0, #0 beq _0809799E ldrb r0, [r1, #0xb] cmp r0, #0 beq _080979AE _0809799E: adds r0, r1, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _080979AE movs r4, #1 _080979AE: adds r0, r4, #0 pop {r4, pc} .align 2, 0 thumb_func_start sub_080979B4 sub_080979B4: @ 0x080979B4 push {lr} ldr r2, _080979C8 @ =gUnk_081232E4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080979C8: .4byte gUnk_081232E4 thumb_func_start sub_080979CC sub_080979CC: @ 0x080979CC push {r4, r5, r6, lr} adds r5, r0, #0 movs r2, #1 movs r0, #1 strb r0, [r5, #0xc] ldrb r1, [r5, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r5, #0x18] ldrb r0, [r5, #0xa] cmp r0, #3 bne _08097A20 movs r0, #0 strb r0, [r5, #0x1e] ldr r0, _08097A18 @ =gUnk_081232FE movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08097A1C @ =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 b _08097A4E .align 2, 0 _08097A18: .4byte gUnk_081232FE _08097A1C: .4byte gRoomControls _08097A20: strb r0, [r5, #0x1e] ldr r0, _08097A50 @ =gUnk_081232EC movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08097A54 @ =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 _08097A4E: pop {r4, r5, r6, pc} .align 2, 0 _08097A50: .4byte gUnk_081232EC _08097A54: .4byte gRoomControls thumb_func_start nullsub_529 nullsub_529: @ 0x08097A58 bx lr .align 2, 0 thumb_func_start sub_08097A5C sub_08097A5C: @ 0x08097A5C push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xc] cmp r0, #0 bne _08097AAC movs r4, #1 movs r0, #1 strb r0, [r5, #0xc] movs r0, #0x5a strb r0, [r5, #0xe] bl Random strb r0, [r5, #0xf] lsrs r0, r0, #0x10 movs r1, #3 ands r0, r1 strb r0, [r5, #0x1e] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r4 strb r0, [r5, #0x18] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldrb r0, [r5, #0xb] bl sub_0804B128 str r0, [r5, #0x54] adds r1, r5, #0 adds r1, #0x54 adds r2, r5, #0 adds r2, #0x70 adds r0, r5, #0 bl sub_080A2CC0 _08097AAC: adds r0, r5, #0 bl sub_08097ADC adds r1, r0, #0 adds r0, r5, #0 bl sub_080A2BE4 adds r0, r5, #0 bl sub_08097B24 adds r2, r5, #0 adds r2, #0x70 ldrh r0, [r2] subs r0, #1 strh r0, [r2] lsls r0, r0, #0x10 cmp r0, #0 bne _08097ADA adds r1, r5, #0 adds r1, #0x54 adds r0, r5, #0 bl sub_080A2CC0 _08097ADA: pop {r4, r5, pc} thumb_func_start sub_08097ADC sub_08097ADC: @ 0x08097ADC push {r4, r5, lr} adds r2, r0, #0 ldr r5, _08097B18 @ =gLinkState ldr r0, [r5, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _08097B20 ldr r4, _08097B1C @ =gLinkEntity adds r0, r2, #0 adds r1, r4, #0 movs r2, #8 movs r3, #8 bl sub_080041A0 cmp r0, #0 beq _08097B20 bl sub_08079F8C cmp r0, #0 beq _08097B20 movs r0, #1 strb r0, [r5, #0x14] movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _08097B20 movs r0, #1 b _08097B22 .align 2, 0 _08097B18: .4byte gLinkState _08097B1C: .4byte gLinkEntity _08097B20: movs r0, #0 _08097B22: pop {r4, r5, pc} thumb_func_start sub_08097B24 sub_08097B24: @ 0x08097B24 push {r4, lr} adds r3, r0, #0 ldrb r0, [r3, #0xe] subs r0, #1 strb r0, [r3, #0xe] movs r4, #0xff lsls r0, r0, #0x18 cmp r0, #0 bne _08097B44 movs r0, #0x5a strb r0, [r3, #0xe] ldrb r0, [r3, #0x1e] adds r0, #1 movs r1, #3 ands r0, r1 strb r0, [r3, #0x1e] _08097B44: ldr r2, _08097B68 @ =gUnk_08123318 ldrb r0, [r3, #0xf] adds r0, #1 strb r0, [r3, #0xf] ands r0, r4 lsrs r0, r0, #5 movs r1, #7 ands r0, r1 lsls r0, r0, #1 adds r0, r0, r2 ldrh r2, [r0] adds r0, r3, #0 adds r1, r2, #0 movs r3, #0 bl sub_0805EC9C pop {r4, pc} .align 2, 0 _08097B68: .4byte gUnk_08123318 thumb_func_start sub_08097B6C sub_08097B6C: @ 0x08097B6C push {lr} ldr r2, _08097B80 @ =gUnk_08123330 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08097B80: .4byte gUnk_08123330 thumb_func_start sub_08097B84 sub_08097B84: @ 0x08097B84 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldr r0, _08097BCC @ =gUnk_08123328 str r0, [r4, #0x48] adds r2, #0x5d ldrh r1, [r2] ldr r0, _08097BD0 @ =0x0000FFFF cmp r1, r0 beq _08097BB0 adds r0, r1, #0 bl sub_0807CBE4 cmp r0, #0 beq _08097BD4 _08097BB0: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #4 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_08097CFC b _08097BD8 .align 2, 0 _08097BCC: .4byte gUnk_08123328 _08097BD0: .4byte 0x0000FFFF _08097BD4: bl sub_0805BC4C _08097BD8: pop {r4, pc} .align 2, 0 thumb_func_start sub_08097BDC sub_08097BDC: @ 0x08097BDC push {r4, lr} adds r4, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08097C10 movs r0, #1 bl sub_08078A90 ldr r0, _08097C14 @ =gUnk_02034490 movs r1, #1 strb r1, [r0] adds r0, r4, #0 movs r1, #0x1e bl sub_0805E4E0 adds r0, r4, #0 bl sub_08097CB0 cmp r0, #0 bne _08097C10 adds r0, r4, #0 bl sub_08097CB4 _08097C10: pop {r4, pc} .align 2, 0 _08097C14: .4byte gUnk_02034490 thumb_func_start sub_08097C18 sub_08097C18: @ 0x08097C18 bx lr .align 2, 0 thumb_func_start sub_08097C1C sub_08097C1C: @ 0x08097C1C bx lr .align 2, 0 thumb_func_start sub_08097C20 sub_08097C20: @ 0x08097C20 push {r4, r5, r6, lr} adds r4, r0, #0 movs r0, #0x1e bl sub_0805E510 adds r0, r4, #0 bl sub_0800445C movs r1, #0x2e ldrsh r0, [r4, r1] movs r2, #0x32 ldrsh r1, [r4, r2] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl sub_080577AC ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] movs r1, #0xff lsls r0, r0, #0x18 lsrs r5, r0, #0x18 cmp r5, #0 bne _08097CA6 movs r0, #8 strb r0, [r4, #0xe] ldrb r0, [r4, #0xf] adds r0, #1 strb r0, [r4, #0xf] ands r1, r0 ldr r6, _08097CA8 @ =gLCDControls movs r0, #0x10 subs r0, r0, r1 lsls r0, r0, #8 orrs r0, r1 adds r1, r6, #0 adds r1, #0x68 strh r0, [r1] lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0x10 bne _08097CA6 movs r0, #0 bl sub_08078A90 ldr r1, _08097CAC @ =gUnk_02034490 movs r0, #0 strb r0, [r1] adds r0, r6, #0 adds r0, #0x66 strh r5, [r0] adds r0, r4, #0 bl sub_08097CFC movs r0, #4 strb r0, [r4, #0xc] ldrb r1, [r4, #0x19] subs r0, #0x11 ands r0, r1 strb r0, [r4, #0x19] movs r0, #0x72 bl PlaySFX movs r0, #0x63 bl sub_0807CD04 _08097CA6: pop {r4, r5, r6, pc} .align 2, 0 _08097CA8: .4byte gLCDControls _08097CAC: .4byte gUnk_02034490 thumb_func_start sub_08097CB0 sub_08097CB0: @ 0x08097CB0 movs r0, #0 bx lr thumb_func_start sub_08097CB4 sub_08097CB4: @ 0x08097CB4 push {lr} movs r3, #0 movs r1, #3 strb r1, [r0, #0xc] ldrb r2, [r0, #0x18] subs r1, #7 ands r1, r2 movs r2, #1 orrs r1, r2 strb r1, [r0, #0x18] ldrb r2, [r0, #0x19] movs r1, #0xd rsbs r1, r1, #0 ands r1, r2 movs r2, #4 orrs r1, r2 strb r1, [r0, #0x19] movs r1, #0x1e strb r1, [r0, #0xe] strb r3, [r0, #0xf] ldr r1, _08097CF8 @ =gLCDControls adds r2, r1, #0 adds r2, #0x66 movs r0, #0xf4 lsls r0, r0, #4 strh r0, [r2] adds r1, #0x68 adds r0, #0xc0 strh r0, [r1] movs r0, #0xa5 lsls r0, r0, #1 bl PlaySFX pop {pc} .align 2, 0 _08097CF8: .4byte gLCDControls thumb_func_start sub_08097CFC sub_08097CFC: @ 0x08097CFC push {r4, r5, r6, lr} adds r5, r0, #0 ldrh r1, [r5, #0x2e] movs r0, #0xf ands r0, r1 cmp r0, #0 bne _08097D40 ldr r0, _08097D38 @ =gUnk_0812336A movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08097D3C @ =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 b _08097D6C .align 2, 0 _08097D38: .4byte gUnk_0812336A _08097D3C: .4byte gRoomControls _08097D40: ldr r0, _08097D70 @ =gUnk_08123344 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r3, _08097D74 @ =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 _08097D6C: pop {r4, r5, r6, pc} .align 2, 0 _08097D70: .4byte gUnk_08123344 _08097D74: .4byte gRoomControls thumb_func_start sub_08097D78 sub_08097D78: @ 0x08097D78 push {lr} ldr r2, _08097D8C @ =gUnk_08123384 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08097D8C: .4byte gUnk_08123384 thumb_func_start sub_08097D90 sub_08097D90: @ 0x08097D90 push {r4, lr} adds r4, r0, #0 movs r3, #1 movs r2, #1 strb r2, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r3 strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x38 strb r2, [r0] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r0, r4, #0 movs r1, #0 bl LoadAnimation pop {r4, pc} .align 2, 0 thumb_func_start sub_08097DCC sub_08097DCC: @ 0x08097DCC push {lr} bl sub_080042B8 pop {pc} thumb_func_start sub_08097DD4 sub_08097DD4: @ 0x08097DD4 push {lr} ldr r2, _08097DE8 @ =gUnk_081233B8 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08097DE8: .4byte gUnk_081233B8 thumb_func_start sub_08097DEC sub_08097DEC: @ 0x08097DEC push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip ldrb r0, [r4, #0xa] cmp r0, #1 beq _08097E46 cmp r0, #1 bgt _08097E0A cmp r0, #0 beq _08097E1C b _08097EA2 _08097E0A: cmp r0, #3 bgt _08097EA2 ldrb r0, [r4, #0xb] strb r0, [r4, #0x1e] ldrb r0, [r4, #0x18] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x18] b _08097E9C _08097E1C: ldrh r2, [r4, #0x2e] movs r1, #0x10 rsbs r1, r1, #0 adds r0, r1, #0 ands r0, r2 strh r0, [r4, #0x2e] ldrh r0, [r4, #0x32] ands r1, r0 strh r1, [r4, #0x32] adds r0, r4, #0 bl sub_08097EB8 ldrb r0, [r4, #0xb] cmp r0, #0 beq _08097EA2 adds r1, r0, #0 adds r1, #0xb adds r0, r4, #0 bl sub_0801D2B4 b _08097EA2 _08097E46: ldrb r0, [r4, #0xb] strb r0, [r4, #0x1e] lsls r0, r0, #0x18 lsrs r0, r0, #0x19 cmp r0, #1 beq _08097E76 cmp r0, #1 bgt _08097E5C cmp r0, #0 beq _08097E68 b _08097E9C _08097E5C: cmp r0, #2 bne _08097E9C adds r0, r4, #0 movs r1, #0xd bl sub_0801D2B4 _08097E68: ldrb r0, [r4, #0x1b] movs r1, #0x3f ands r1, r0 movs r0, #0x40 orrs r1, r0 strb r1, [r4, #0x1b] b _08097E9C _08097E76: ldrb r1, [r4, #0x1b] movs r0, #0x3f ands r0, r1 movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x1b] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 movs r1, #0xb bl sub_0801D2B4 _08097E9C: adds r0, r4, #0 bl sub_08097F34 _08097EA2: pop {r4, pc} thumb_func_start sub_08097EA4 sub_08097EA4: @ 0x08097EA4 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xa] cmp r0, #0 beq _08097EB4 adds r0, r1, #0 bl sub_08097F10 _08097EB4: pop {pc} .align 2, 0 thumb_func_start sub_08097EB8 sub_08097EB8: @ 0x08097EB8 push {r4, r5, r6, lr} movs r2, #0x2e ldrsh r1, [r0, r2] ldr r3, _08097F04 @ =gRoomControls ldrh r2, [r3, #6] subs r1, r1, r2 asrs r5, r1, #4 movs r2, #0x3f ands r5, r2 movs r1, #0x32 ldrsh r0, [r0, r1] ldrh r1, [r3, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r5, r0 ldr r4, _08097F08 @ =gUnk_081233C0 movs r2, #0 ldrsh r0, [r4, r2] ldr r1, _08097F0C @ =0x00007FFF cmp r0, r1 beq _08097F00 adds r6, r1, #0 _08097EE8: ldrh r0, [r4, #2] movs r2, #0 ldrsh r1, [r4, r2] adds r1, r5, r1 movs r2, #1 bl UpdateCollisionLayer adds r4, #4 movs r1, #0 ldrsh r0, [r4, r1] cmp r0, r6 bne _08097EE8 _08097F00: pop {r4, r5, r6, pc} .align 2, 0 _08097F04: .4byte gRoomControls _08097F08: .4byte gUnk_081233C0 _08097F0C: .4byte 0x00007FFF thumb_func_start sub_08097F10 sub_08097F10: @ 0x08097F10 push {r4, lr} adds r4, r0, #0 ldr r0, _08097F30 @ =gRoomControls movs r2, #0xc ldrsh r1, [r0, r2] ldrh r0, [r0, #8] subs r1, r1, r0 adds r0, r4, #0 bl sub_08097F60 adds r1, r4, #0 adds r1, #0x70 ldrh r1, [r1] subs r1, r1, r0 strh r1, [r4, #0x32] pop {r4, pc} .align 2, 0 _08097F30: .4byte gRoomControls thumb_func_start sub_08097F34 sub_08097F34: @ 0x08097F34 push {r4, lr} adds r4, r0, #0 movs r0, #0x32 ldrsh r1, [r4, r0] ldr r0, _08097F5C @ =gRoomControls ldrh r0, [r0, #8] subs r1, r1, r0 adds r0, r4, #0 bl sub_08097F60 ldrh r1, [r4, #0x32] adds r1, r1, r0 adds r0, r4, #0 adds r0, #0x70 strh r1, [r0] adds r0, r4, #0 bl sub_08097F10 pop {r4, pc} .align 2, 0 _08097F5C: .4byte gRoomControls thumb_func_start sub_08097F60 sub_08097F60: @ 0x08097F60 push {lr} ldrb r2, [r0, #0xa] cmp r2, #1 bne _08097F74 ldrb r0, [r0, #0x1e] lsrs r0, r0, #1 cmp r0, #1 bne _08097F7C asrs r1, r1, #3 b _08097F7E _08097F74: cmp r2, #1 blt _08097F7E cmp r2, #3 bgt _08097F7E _08097F7C: asrs r1, r1, #1 _08097F7E: adds r0, r1, #0 pop {pc} .align 2, 0 thumb_func_start sub_08097F84 sub_08097F84: @ 0x08097F84 push {r4, lr} adds r4, r0, #0 ldr r0, _08097FAC @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _08097F98 bl sub_0805E780 _08097F98: ldr r0, _08097FB0 @ =gUnk_08123410 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 pop {r4, pc} .align 2, 0 _08097FAC: .4byte gLinkState _08097FB0: .4byte gUnk_08123410 thumb_func_start sub_08097FB4 sub_08097FB4: @ 0x08097FB4 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] adds r0, #1 movs r1, #0 strb r0, [r4, #0xc] movs r2, #0 strh r1, [r4, #0x24] str r1, [r4, #0x6c] adds r1, r4, #0 adds r1, #0x7a movs r0, #0x90 lsls r0, r0, #5 strh r0, [r1] strb r2, [r4, #0xe] movs r0, #0x1e strb r0, [r4, #0xf] ldr r1, _08098014 @ =gUnk_0812341C ldrb r0, [r4, #0xa] adds r0, r0, r1 ldrb r0, [r0] adds r1, r4, #0 adds r1, #0x72 strh r0, [r1] movs r0, #0x80 lsls r0, r0, #6 str r0, [r4, #0x74] adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 ldrb r0, [r4, #0xa] cmp r0, #0 bne _08098018 adds r1, r4, #0 adds r1, #0x7e movs r0, #0x40 strh r0, [r1] adds r0, r4, #0 movs r1, #1 movs r2, #0 bl sub_080AE008 ldrb r1, [r4, #0xa] adds r0, r4, #0 bl LoadAnimation b _08098032 .align 2, 0 _08098014: .4byte gUnk_0812341C _08098018: ldr r0, [r4, #0x50] adds r0, #0x60 ldrh r1, [r0] adds r0, r4, #0 adds r0, #0x60 strh r1, [r0] ldr r2, [r4, #0x50] ldrb r1, [r4, #0xa] movs r0, #0xd muls r0, r1, r0 ldrb r2, [r2, #0x1e] adds r0, r0, r2 strb r0, [r4, #0x1e] _08098032: adds r0, r4, #0 bl sub_08098130 pop {r4, pc} .align 2, 0 thumb_func_start sub_0809803C sub_0809803C: @ 0x0809803C push {r4, r5, lr} adds r4, r0, #0 ldrb r5, [r4, #0xa] cmp r5, #0 bne _08098070 bl sub_080042B8 ldrb r0, [r4, #0xb] cmp r0, #0 beq _08098082 ldr r0, _0809806C @ =gLinkEntity strb r5, [r0, #0xf] ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #1 bl LoadAnimation movs r0, #0xbc lsls r0, r0, #1 bl PlaySFX b _08098082 .align 2, 0 _0809806C: .4byte gLinkEntity _08098070: ldr r2, [r4, #0x50] ldrb r1, [r4, #0xa] movs r0, #0xd muls r0, r1, r0 ldrb r1, [r2, #0x1e] adds r0, r0, r1 strb r0, [r4, #0x1e] ldrb r0, [r2, #0xc] strb r0, [r4, #0xc] _08098082: pop {r4, r5, pc} thumb_func_start sub_08098084 sub_08098084: @ 0x08098084 push {r4, lr} adds r4, r0, #0 ldr r1, [r4, #0x6c] movs r0, #0xa0 lsls r0, r0, #0xd cmp r1, r0 bls _080980A8 ldr r0, _080980A4 @ =gLinkState ldr r1, [r0, #0x30] movs r2, #0x80 orrs r1, r2 str r1, [r0, #0x30] bl sub_0805E780 b _0809812E .align 2, 0 _080980A4: .4byte gLinkState _080980A8: ldrb r0, [r4, #0xa] cmp r0, #0 bne _080980D8 adds r0, r4, #0 bl sub_080042B8 adds r2, r4, #0 adds r2, #0x7e ldrh r0, [r2] subs r0, #1 strh r0, [r2] lsls r0, r0, #0x10 ldr r1, _080980D4 @ =0xFFFF0000 cmp r0, r1 bne _080980E6 movs r0, #0x40 strh r0, [r2] movs r0, #0xbc lsls r0, r0, #1 bl PlaySFX b _080980E6 .align 2, 0 _080980D4: .4byte 0xFFFF0000 _080980D8: ldr r2, [r4, #0x50] ldrb r1, [r4, #0xa] movs r0, #0xd muls r0, r1, r0 ldrb r2, [r2, #0x1e] adds r0, r0, r2 strb r0, [r4, #0x1e] _080980E6: ldr r0, [r4, #0x6c] movs r1, #0xa0 lsls r1, r1, #5 adds r0, r0, r1 str r0, [r4, #0x6c] ldr r0, [r4, #0x70] ldr r1, [r4, #0x74] adds r0, r0, r1 str r0, [r4, #0x70] adds r2, r4, #0 adds r2, #0x72 ldrh r1, [r2] movs r0, #0x1f ands r0, r1 strh r0, [r2] ldr r0, [r4, #0x74] movs r1, #0xa0 lsls r1, r1, #1 adds r0, r0, r1 str r0, [r4, #0x74] ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _08098128 movs r0, #0x1e strb r0, [r4, #0xf] ldrb r0, [r4, #0xe] movs r1, #1 eors r0, r1 strb r0, [r4, #0xe] _08098128: adds r0, r4, #0 bl sub_08098130 _0809812E: pop {r4, pc} thumb_func_start sub_08098130 sub_08098130: @ 0x08098130 push {r4, lr} adds r4, r0, #0 ldr r0, _08098160 @ =gLinkEntity adds r1, r4, #0 bl CopyPosition adds r0, r4, #0 adds r0, #0x72 ldrh r0, [r0] strb r0, [r4, #0x15] adds r0, r4, #0 adds r0, #0x7a ldrh r0, [r0] strh r0, [r4, #0x24] adds r0, r4, #0 bl sub_0806F69C ldr r0, [r4, #0x30] ldr r1, _08098164 @ =0xFFEC0000 adds r0, r0, r1 ldr r1, [r4, #0x6c] adds r0, r0, r1 str r0, [r4, #0x30] pop {r4, pc} .align 2, 0 _08098160: .4byte gLinkEntity _08098164: .4byte 0xFFEC0000 thumb_func_start sub_08098168 sub_08098168: @ 0x08098168 push {r4, r5, lr} adds r4, r0, #0 ldrb r5, [r4, #0xc] cmp r5, #0 bne _080981DA movs r2, #1 movs r3, #1 strb r3, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r1, [r4, #0x19] movs r0, #0xd rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r4, #0x19] strb r3, [r4, #0xe] bl Random movs r1, #0xf ands r0, r1 strb r0, [r4, #0xf] adds r0, r4, #0 adds r0, #0x68 strb r5, [r0] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r4, #0 bl sub_08016A30 ldr r1, _080981CC @ =gLCDControls adds r2, r1, #0 adds r2, #0x66 movs r3, #0 movs r0, #0xbd lsls r0, r0, #6 strh r0, [r2] ldrb r0, [r4, #0xa] cmp r0, #0 bne _080981D4 adds r1, #0x68 ldr r0, _080981D0 @ =0x0000060A b _080981D8 .align 2, 0 _080981CC: .4byte gLCDControls _080981D0: .4byte 0x0000060A _080981D4: adds r1, #0x68 ldr r0, _08098208 @ =0x00000808 _080981D8: strh r0, [r1] _080981DA: ldrb r0, [r4, #0xa] adds r3, r4, #0 adds r3, #0x68 cmp r0, #0 beq _08098222 ldr r0, _0809820C @ =gLinkEntity movs r2, #0x2e ldrsh r1, [r0, r2] ldr r0, _08098210 @ =gRoomControls ldrh r0, [r0, #6] subs r1, r1, r0 movs r0, #0xf8 lsls r0, r0, #1 cmp r1, r0 ble _08098214 ldrb r1, [r3] movs r0, #0 ldrsb r0, [r3, r0] cmp r0, #0x3f bgt _08098222 adds r0, r1, #1 b _08098220 .align 2, 0 _08098208: .4byte 0x00000808 _0809820C: .4byte gLinkEntity _08098210: .4byte gRoomControls _08098214: ldrb r1, [r3] movs r0, #0 ldrsb r0, [r3, r0] cmp r0, #0 ble _08098222 subs r0, r1, #1 _08098220: strb r0, [r3] _08098222: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809823C movs r0, #8 strb r0, [r4, #0xe] ldrb r0, [r4, #0xf] adds r0, #1 movs r1, #0xf ands r0, r1 strb r0, [r4, #0xf] _0809823C: ldr r1, _0809825C @ =gUnk_08123484 ldrb r0, [r4, #0xf] adds r0, r0, r1 ldrb r0, [r0] adds r2, r4, #0 adds r2, #0x62 strb r0, [r2] ldrb r0, [r4, #0xf] adds r0, r0, r1 ldrb r1, [r3] ldrb r0, [r0] adds r1, r1, r0 adds r0, r4, #0 adds r0, #0x63 strb r1, [r0] pop {r4, r5, pc} .align 2, 0 _0809825C: .4byte gUnk_08123484 thumb_func_start sub_08098260 sub_08098260: @ 0x08098260 push {lr} ldr r2, _08098274 @ =gUnk_08123494 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08098274: .4byte gUnk_08123494 thumb_func_start sub_08098278 sub_08098278: @ 0x08098278 push {lr} adds r3, r0, #0 adds r3, #0x29 ldrb r2, [r3] movs r1, #8 rsbs r1, r1, #0 ands r1, r2 movs r2, #5 orrs r1, r2 strb r1, [r3] bl sub_08098340 pop {pc} .align 2, 0 thumb_func_start sub_08098294 sub_08098294: @ 0x08098294 push {r4, r5, lr} adds r4, r0, #0 bl sub_08098418 cmp r0, #0 beq _080982FA movs r5, #0 movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x62 strb r5, [r0] adds r0, #1 strb r5, [r0] adds r0, #0xf ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x70 ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer movs r0, #0xb5 lsls r0, r0, #1 bl sub_08004488 adds r0, r4, #0 movs r1, #0x1e bl sub_0805E4E0 bl sub_08079F8C cmp r0, #0 beq _080982FA ldr r2, _080982FC @ =gLinkState movs r0, #0x90 strb r0, [r2, #6] movs r0, #5 strb r0, [r2, #0xc] ldr r0, [r2, #0x30] movs r1, #1 orrs r0, r1 str r0, [r2, #0x30] ldr r1, _08098300 @ =gLinkEntity strh r5, [r1, #0x2c] strh r5, [r1, #0x30] ldrb r0, [r1, #0x14] lsls r0, r0, #2 strb r0, [r1, #0x15] _080982FA: pop {r4, r5, pc} .align 2, 0 _080982FC: .4byte gLinkState _08098300: .4byte gLinkEntity thumb_func_start sub_08098304 sub_08098304: @ 0x08098304 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0809833C ldrb r0, [r4, #0xb] cmp r0, #0 bne _0809832C adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 b _08098336 _0809832C: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CD48 _08098336: adds r0, r4, #0 bl sub_08098340 _0809833C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08098340 sub_08098340: @ 0x08098340 push {lr} movs r1, #1 strb r1, [r0, #0xc] adds r2, r0, #0 adds r2, #0x74 movs r1, #0x3c strh r1, [r2] bl sub_08098354 pop {pc} thumb_func_start sub_08098354 sub_08098354: @ 0x08098354 push {r4, r5, r6, lr} adds r6, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _080983BC strb r0, [r6, #0xb] movs r0, #0x2e ldrsh r2, [r6, r0] ldr r1, _080983B4 @ =gRoomControls ldrh r0, [r1, #6] subs r2, r2, r0 asrs r2, r2, #4 movs r3, #0x3f ands r2, r3 movs r4, #0x32 ldrsh r0, [r6, r4] ldrh r1, [r1, #8] adds r1, #0x10 subs r0, r0, r1 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r2, r0 adds r4, r6, #0 adds r4, #0x70 strh r2, [r4] ldrh r0, [r4] adds r5, r6, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080001DA adds r1, r6, #0 adds r1, #0x72 strh r0, [r1] ldr r0, _080983B8 @ =0x00004053 ldrh r1, [r4] ldrb r2, [r5] bl UpdateCollisionLayer adds r0, r6, #0 movs r1, #1 bl UpdateSprite b _0809840C .align 2, 0 _080983B4: .4byte gRoomControls _080983B8: .4byte 0x00004053 _080983BC: movs r0, #1 strb r0, [r6, #0xb] movs r0, #0x2e ldrsh r2, [r6, r0] ldr r1, _08098410 @ =gRoomControls ldrh r0, [r1, #6] adds r0, #0x10 subs r2, r2, r0 asrs r2, r2, #4 movs r3, #0x3f ands r2, r3 movs r4, #0x32 ldrsh r0, [r6, r4] ldrh r1, [r1, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r2, r0 adds r4, r6, #0 adds r4, #0x70 strh r2, [r4] ldrh r0, [r4] adds r5, r6, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080001DA adds r1, r6, #0 adds r1, #0x72 strh r0, [r1] ldr r0, _08098414 @ =0x00004052 ldrh r1, [r4] ldrb r2, [r5] bl UpdateCollisionLayer adds r0, r6, #0 movs r1, #0 bl UpdateSprite _0809840C: pop {r4, r5, r6, pc} .align 2, 0 _08098410: .4byte gRoomControls _08098414: .4byte 0x00004052 thumb_func_start sub_08098418 sub_08098418: @ 0x08098418 push {r4, r5, r6, lr} adds r4, r0, #0 adds r6, r4, #0 adds r6, #0x70 ldrh r0, [r6] adds r5, r4, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080001DA ldr r1, _08098448 @ =0x00004054 cmp r0, r1 bne _0809846C adds r1, r4, #0 adds r1, #0x74 ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _0809844C movs r0, #1 b _08098482 .align 2, 0 _08098448: .4byte 0x00004054 _0809844C: adds r0, r4, #0 bl sub_08098484 ldr r1, _08098468 @ =gUnk_081234A0 ldrb r0, [r4, #0xb] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] ldrh r1, [r6] ldrb r2, [r5] bl UpdateCollisionLayer b _08098480 .align 2, 0 _08098468: .4byte gUnk_081234A0 _0809846C: adds r1, r4, #0 adds r1, #0x74 movs r2, #0 movs r0, #0x3c strh r0, [r1] adds r0, r4, #0 adds r0, #0x62 strb r2, [r0] adds r0, #1 strb r2, [r0] _08098480: movs r0, #0 _08098482: pop {r4, r5, r6, pc} thumb_func_start sub_08098484 sub_08098484: @ 0x08098484 push {r4, lr} adds r3, r0, #0 ldrb r0, [r3, #0xb] ldr r4, _080984C4 @ =gUnk_081234AC cmp r0, #0 bne _08098492 ldr r4, _080984C8 @ =gUnk_081234A4 _08098492: adds r2, r3, #0 adds r2, #0x74 ldrh r0, [r2] lsrs r0, r0, #2 movs r1, #6 ands r0, r1 adds r4, r4, r0 ldrb r0, [r4] adds r1, r3, #0 adds r1, #0x62 strb r0, [r1] ldrb r1, [r4, #1] adds r0, r3, #0 adds r0, #0x63 strb r1, [r0] ldrh r1, [r2] movs r0, #3 ands r0, r1 cmp r0, #0 bne _080984C2 movs r0, #0x82 lsls r0, r0, #1 bl sub_08004488 _080984C2: pop {r4, pc} .align 2, 0 _080984C4: .4byte gUnk_081234AC _080984C8: .4byte gUnk_081234A4 thumb_func_start sub_080984CC sub_080984CC: @ 0x080984CC push {r4, lr} adds r4, r0, #0 ldr r1, _080984E8 @ =gUnk_08123504 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 bl sub_0800445C pop {r4, pc} .align 2, 0 _080984E8: .4byte gUnk_08123504 thumb_func_start sub_080984EC sub_080984EC: @ 0x080984EC push {lr} movs r1, #1 strb r1, [r0, #0xc] ldr r2, _08098528 @ =gUnk_081234EC ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] str r1, [r0, #0x48] ldrb r0, [r0, #0xb] cmp r0, #1 bne _08098524 ldr r0, _0809852C @ =0x00004024 movs r1, #0x82 lsls r1, r1, #3 movs r2, #1 bl UpdateCollisionLayer ldr r0, _08098530 @ =0x00004026 ldr r1, _08098534 @ =0x00000411 movs r2, #1 bl UpdateCollisionLayer ldr r0, _08098538 @ =0x00004025 ldr r1, _0809853C @ =0x00000412 movs r2, #1 bl UpdateCollisionLayer _08098524: pop {pc} .align 2, 0 _08098528: .4byte gUnk_081234EC _0809852C: .4byte 0x00004024 _08098530: .4byte 0x00004026 _08098534: .4byte 0x00000411 _08098538: .4byte 0x00004025 _0809853C: .4byte 0x00000412 thumb_func_start nullsub_532 nullsub_532: @ 0x08098540 bx lr .align 2, 0 thumb_func_start sub_08098544 sub_08098544: @ 0x08098544 push {lr} ldr r2, _08098558 @ =gUnk_0812350C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08098558: .4byte gUnk_0812350C thumb_func_start sub_0809855C sub_0809855C: @ 0x0809855C push {r4, r5, lr} adds r4, r0, #0 movs r3, #0 movs r5, #1 strb r5, [r4, #0xc] ldrb r0, [r4, #0x10] movs r2, #0x80 orrs r0, r2 strb r0, [r4, #0x10] movs r0, #0x29 adds r0, r0, r4 mov ip, r0 ldrb r1, [r0] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 mov r1, ip strb r0, [r1] ldrb r1, [r4, #0x19] movs r0, #0x3f ands r0, r1 orrs r0, r2 strb r0, [r4, #0x19] strb r3, [r4, #0xf] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x6e strb r0, [r1] subs r1, #4 movs r0, #0x86 strb r0, [r1] strb r3, [r4, #0x16] ldrb r0, [r4, #0xa] cmp r0, #0 beq _080985AC movs r0, #2 strb r0, [r4, #0x1c] b _080985AE _080985AC: strb r5, [r4, #0x1c] _080985AE: ldr r1, [r4, #0x50] adds r0, r4, #0 bl sub_0806FAD8 adds r0, r4, #0 bl sub_08098918 pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080985C0 sub_080985C0: @ 0x080985C0 push {r4, lr} adds r4, r0, #0 bl sub_080989E4 cmp r0, #0 bne _080985CE b _080986FC _080985CE: ldrb r0, [r0, #0xc] cmp r0, #4 bls _080985D6 b _080986E6 _080985D6: adds r0, r4, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _080985E6 b _080986EE _080985E6: movs r0, #0x3f ands r0, r1 subs r0, #4 cmp r0, #0x1c bls _080985F2 b _08098702 _080985F2: lsls r0, r0, #2 ldr r1, _080985FC @ =_08098600 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080985FC: .4byte _08098600 _08098600: @ jump table .4byte _080986C4 @ case 0 .4byte _080986C4 @ case 1 .4byte _080986C4 @ case 2 .4byte _08098702 @ case 3 .4byte _080986C4 @ case 4 .4byte _080986C4 @ case 5 .4byte _080986C4 @ case 6 .4byte _080986C4 @ case 7 .4byte _080986C4 @ case 8 .4byte _080986C4 @ case 9 .4byte _08098702 @ case 10 .4byte _0809867E @ case 11 .4byte _080986C4 @ case 12 .4byte _080986C4 @ case 13 .4byte _080986C4 @ case 14 .4byte _08098674 @ case 15 .4byte _080986E0 @ case 16 .4byte _08098702 @ case 17 .4byte _080986E0 @ case 18 .4byte _08098702 @ case 19 .4byte _080986C4 @ case 20 .4byte _080986C4 @ case 21 .4byte _080986C4 @ case 22 .4byte _08098702 @ case 23 .4byte _08098702 @ case 24 .4byte _0809867E @ case 25 .4byte _08098702 @ case 26 .4byte _08098702 @ case 27 .4byte _080986E0 @ case 28 _08098674: movs r1, #0 movs r0, #3 strb r0, [r4, #0xc] strb r1, [r4, #0xd] b _08098702 _0809867E: movs r2, #0 movs r0, #4 strb r0, [r4, #0xc] movs r0, #0xa8 lsls r0, r0, #0xa str r0, [r4, #0x20] adds r0, r4, #0 adds r0, #0x63 strb r2, [r0] ldrb r1, [r4, #0x18] movs r0, #0x31 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x10 orrs r0, r1 strb r0, [r4, #0x18] adds r3, r4, #0 adds r3, #0x29 ldrb r1, [r3] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r3] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldr r0, [r4, #0x50] str r2, [r0, #0x54] adds r0, r4, #0 bl sub_080988E8 b _08098702 _080986C4: ldrb r0, [r4, #0xa] cmp r0, #0 beq _080986E6 ldr r0, _080986DC @ =gLinkState adds r0, #0xac ldrh r1, [r0] movs r0, #8 ands r0, r1 cmp r0, #0 beq _08098702 b _080986E6 .align 2, 0 _080986DC: .4byte gLinkState _080986E0: ldrb r0, [r4, #0xa] cmp r0, #0 bne _08098702 _080986E6: adds r0, r4, #0 bl sub_080989C0 b _08098702 _080986EE: adds r0, r4, #0 bl sub_08098918 adds r0, r4, #0 bl sub_08078930 b _08098702 _080986FC: adds r0, r4, #0 bl sub_080989C0 _08098702: pop {r4, pc} thumb_func_start sub_08098704 sub_08098704: @ 0x08098704 push {lr} ldr r2, _08098718 @ =gUnk_08123524 ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08098718: .4byte gUnk_08123524 thumb_func_start sub_0809871C sub_0809871C: @ 0x0809871C adds r3, r0, #0 ldrb r1, [r3, #0x10] movs r0, #0x80 movs r2, #0 orrs r0, r1 strb r0, [r3, #0x10] adds r1, r3, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #3 movs r0, #1 strb r0, [r1] ldr r0, _08098754 @ =gLinkEntity adds r0, #0x3b ldrb r0, [r0] subs r1, #4 strb r0, [r1] adds r0, r3, #0 adds r0, #0x63 strb r2, [r0] ldr r0, [r3, #0x50] str r2, [r0, #0x54] ldrb r0, [r3, #0xd] adds r0, #1 strb r0, [r3, #0xd] bx lr .align 2, 0 _08098754: .4byte gLinkEntity thumb_func_start nullsub_533 nullsub_533: @ 0x08098758 bx lr .align 2, 0 thumb_func_start sub_0809875C sub_0809875C: @ 0x0809875C adds r0, #0x29 ldrb r2, [r0] movs r1, #0x39 rsbs r1, r1, #0 ands r1, r2 movs r2, #0x18 orrs r1, r2 strb r1, [r0] bx lr .align 2, 0 thumb_func_start sub_08098770 sub_08098770: @ 0x08098770 push {r4, lr} adds r4, r0, #0 bl sub_080043E8 cmp r0, #2 beq _0809878C cmp r0, #2 bhi _08098786 cmp r0, #1 beq _08098792 b _080987A4 _08098786: cmp r0, #3 beq _08098798 b _080987A4 _0809878C: adds r0, r4, #0 movs r1, #0xb b _0809879C _08098792: adds r0, r4, #0 movs r1, #0 b _0809879C _08098798: adds r0, r4, #0 movs r1, #0xc _0809879C: movs r2, #0 bl CreateFx b _080987AC _080987A4: adds r0, r4, #0 bl sub_080989C0 b _080987B0 _080987AC: bl sub_0805E780 _080987B0: pop {r4, pc} .align 2, 0 thumb_func_start sub_080987B4 sub_080987B4: @ 0x080987B4 push {lr} bl sub_0805E780 pop {pc} thumb_func_start sub_080987BC sub_080987BC: @ 0x080987BC push {lr} adds r1, r0, #0 ldr r0, _080987D0 @ =gLinkState ldrb r0, [r0, #5] cmp r0, #0 bne _080987CE adds r0, r1, #0 bl sub_080987D4 _080987CE: pop {pc} .align 2, 0 _080987D0: .4byte gLinkState thumb_func_start sub_080987D4 sub_080987D4: @ 0x080987D4 movs r2, #0 movs r1, #1 strb r1, [r0, #0xc] strb r2, [r0, #0xd] bx lr .align 2, 0 thumb_func_start sub_080987E0 sub_080987E0: @ 0x080987E0 push {r4, lr} adds r4, r0, #0 ldr r1, _0809880C @ =gUnk_08123540 ldrb r0, [r4, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 ldrb r0, [r4, #0xd] cmp r0, #1 bhi _0809880A adds r0, r4, #0 bl sub_080989E4 cmp r0, #0 bne _0809880A adds r0, r4, #0 bl sub_080989C0 _0809880A: pop {r4, pc} .align 2, 0 _0809880C: .4byte gUnk_08123540 thumb_func_start sub_08098810 sub_08098810: @ 0x08098810 movs r2, #0 movs r1, #1 strb r1, [r0, #0xd] movs r1, #0x30 strb r1, [r0, #0x1d] strb r2, [r0, #0xe] bx lr .align 2, 0 thumb_func_start sub_08098820 sub_08098820: @ 0x08098820 push {lr} adds r2, r0, #0 ldr r0, _0809884C @ =gLinkState ldrb r1, [r0, #0x1c] movs r0, #0xf ands r0, r1 cmp r0, #1 bne _0809883E adds r0, r2, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x13 beq _08098850 _0809883E: adds r1, r2, #0 adds r1, #0x62 movs r0, #0 strb r0, [r1] movs r0, #1 strb r0, [r2, #0xc] b _08098856 .align 2, 0 _0809884C: .4byte gLinkState _08098850: adds r0, r2, #0 bl sub_0806F4E8 _08098856: pop {pc} thumb_func_start sub_08098858 sub_08098858: @ 0x08098858 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0xe] cmp r1, #0 bne _08098878 movs r0, #1 strb r0, [r4, #0xe] adds r0, r4, #0 adds r0, #0x62 strb r1, [r0] adds r2, r4, #0 adds r2, #0x63 movs r0, #0xfe strb r0, [r2] ldr r0, [r4, #0x50] str r1, [r0, #0x54] _08098878: ldr r0, _0809889C @ =gLinkState ldrb r1, [r0, #0x1c] movs r0, #0xf ands r0, r1 cmp r0, #1 bne _08098892 adds r0, r4, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0x13 beq _080988A0 _08098892: adds r0, r4, #0 bl sub_080989C0 b _080988B4 .align 2, 0 _0809889C: .4byte gLinkState _080988A0: adds r0, r4, #0 bl sub_0806F3E4 cmp r0, #0 beq _080988B4 ldrb r0, [r4, #0xa] cmp r0, #0 bne _080988B4 bl sub_0805E780 _080988B4: pop {r4, pc} .align 2, 0 thumb_func_start sub_080988B8 sub_080988B8: @ 0x080988B8 push {lr} adds r2, r0, #0 ldr r0, _080988CC @ =gLinkState ldrb r0, [r0, #0x1c] cmp r0, #0 bne _080988D0 adds r0, r2, #0 bl sub_080989C0 b _080988D8 .align 2, 0 _080988CC: .4byte gLinkState _080988D0: ldrb r1, [r2, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r2, #0x10] _080988D8: pop {pc} .align 2, 0 thumb_func_start nullsub_123 nullsub_123: @ 0x080988DC bx lr .align 2, 0 thumb_func_start sub_080988E0 sub_080988E0: @ 0x080988E0 push {lr} bl sub_080989C0 pop {pc} thumb_func_start sub_080988E8 sub_080988E8: @ 0x080988E8 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x20] cmp r0, #0 bge _080988FA ldrb r0, [r4, #0x18] movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x18] _080988FA: movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _0809890E adds r0, r4, #0 bl sub_080989C0 _0809890E: pop {r4, pc} thumb_func_start sub_08098910 sub_08098910: @ 0x08098910 push {lr} bl sub_080989C0 pop {pc} thumb_func_start sub_08098918 sub_08098918: @ 0x08098918 push {r4, r5, r6, lr} adds r4, r0, #0 bl sub_080989E4 adds r6, r0, #0 cmp r6, #0 bne _0809892E adds r0, r4, #0 bl sub_080989C0 b _080989BC _0809892E: adds r0, r6, #0 adds r1, r4, #0 bl CopyPosition ldrb r1, [r6, #0x10] movs r0, #0x80 ands r0, r1 lsls r0, r0, #0x18 lsrs r5, r0, #0x18 cmp r5, #0 beq _08098990 ldrb r0, [r4, #0xf] cmp r0, #0 bne _08098968 adds r0, #1 strb r0, [r4, #0xf] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] ldr r1, [r4, #0x50] adds r0, r4, #0 bl sub_0806FAD8 _08098968: ldr r2, _0809898C @ =gUnk_08123558 adds r0, r6, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0xf ands r0, r1 adds r0, r0, r2 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 subs r0, #8 movs r1, #0 strh r0, [r4, #0x36] adds r0, r4, #0 adds r0, #0x63 strb r1, [r0] b _080989BC .align 2, 0 _0809898C: .4byte gUnk_08123558 _08098990: ldrb r0, [r4, #0xf] cmp r0, #0 beq _080989B2 strb r5, [r4, #0xf] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] ldr r1, [r4, #0x50] adds r0, r4, #0 bl sub_0806FAD8 _080989B2: strh r5, [r4, #0x36] adds r1, r4, #0 adds r1, #0x63 movs r0, #3 strb r0, [r1] _080989BC: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_080989C0 sub_080989C0: @ 0x080989C0 push {r4, lr} adds r4, r0, #0 bl sub_080989E4 cmp r0, #0 beq _080989D2 ldr r1, [r4, #0x50] movs r0, #0 str r0, [r1, #0x54] _080989D2: ldrb r1, [r4, #0xa] adds r1, #3 adds r0, r4, #0 movs r2, #0 bl CreateFx bl sub_0805E780 pop {r4, pc} thumb_func_start sub_080989E4 sub_080989E4: @ 0x080989E4 push {lr} ldr r1, [r0, #0x50] cmp r1, #0 beq _080989F4 ldr r0, [r1, #4] cmp r0, #0 bne _080989F4 movs r1, #0 _080989F4: adds r0, r1, #0 pop {pc} thumb_func_start sub_080989F8 sub_080989F8: @ 0x080989F8 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] ldr r0, [r0, #4] cmp r0, #0 bne _08098A08 bl sub_0805E780 _08098A08: ldrb r0, [r4, #0xc] cmp r0, #0 bne _08098A44 movs r0, #1 strb r0, [r4, #0xc] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] movs r0, #0x28 strb r0, [r4, #0x1e] ldrb r0, [r4, #0xa] cmp r0, #0 bne _08098A38 ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #1 orrs r1, r0 strb r1, [r4, #0x18] b _08098A44 _08098A38: cmp r0, #2 bne _08098A44 ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x18] _08098A44: ldr r0, [r4, #0x50] movs r3, #0x80 lsls r3, r3, #0xc adds r1, r4, #0 movs r2, #0 bl PositionRelative movs r0, #0 strh r0, [r4, #0x36] ldrb r0, [r4, #0xa] cmp r0, #0 beq _08098A76 ldr r3, [r4, #0x54] ldrb r1, [r3, #0x18] lsls r1, r1, #0x1e lsrs r1, r1, #0x1e ldrb r2, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] ldrb r0, [r3, #0x1e] adds r0, #0x1f strb r0, [r4, #0x1e] _08098A76: pop {r4, pc} thumb_func_start sub_08098A78 sub_08098A78: @ 0x08098A78 push {lr} ldr r2, _08098A8C @ =gUnk_08123568 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08098A8C: .4byte gUnk_08123568 thumb_func_start sub_08098A90 sub_08098A90: @ 0x08098A90 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #1 beq _08098A9C movs r0, #2 _08098A9C: strb r0, [r4, #0xc] bl Random movs r1, #0x7f ands r0, r1 adds r0, #0x7f strb r0, [r4, #0xe] adds r1, r4, #0 adds r1, #0x38 movs r0, #1 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip ldr r1, _08098ACC @ =gUnk_08123574 ldrb r0, [r4, #0xa] adds r0, r0, r1 ldrb r1, [r0] ldrb r0, [r4, #0xb] adds r1, r1, r0 adds r0, r4, #0 bl UpdateSprite pop {r4, pc} .align 2, 0 _08098ACC: .4byte gUnk_08123574 thumb_func_start sub_08098AD0 sub_08098AD0: @ 0x08098AD0 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08098AE6 ldrb r0, [r1, #0xc] adds r0, #1 strb r0, [r1, #0xc] _08098AE6: pop {pc} thumb_func_start sub_08098AE8 sub_08098AE8: @ 0x08098AE8 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r4, #0x5a ldrb r1, [r4] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08098B08 movs r0, #0xfe ands r0, r1 strb r0, [r4] ldr r0, _08098B0C @ =0x0000021B bl sub_08004488 _08098B08: pop {r4, pc} .align 2, 0 _08098B0C: .4byte 0x0000021B thumb_func_start sub_08098B10 sub_08098B10: @ 0x08098B10 push {lr} ldr r2, _08098B24 @ =gUnk_08123664 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08098B24: .4byte gUnk_08123664 thumb_func_start sub_08098B28 sub_08098B28: @ 0x08098B28 push {r4, r5, r6, r7, lr} adds r5, r0, #0 ldrb r2, [r5, #0xa] lsls r2, r2, #1 ldr r0, _08098BD4 @ =gUnk_0812366C adds r2, r2, r0 movs r3, #1 movs r4, #1 strb r4, [r5, #0xc] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 orrs r0, r3 strb r0, [r5, #0x18] ldrb r0, [r5, #0xa] strb r0, [r5, #0x1e] ldrb r0, [r2] adds r1, r5, #0 adds r1, #0x82 strb r0, [r1] ldrb r0, [r2, #1] adds r2, r5, #0 adds r2, #0x83 strb r0, [r2] ldrb r0, [r1] lsrs r0, r0, #1 ldrh r1, [r5, #0x2e] subs r1, r1, r0 adds r0, r5, #0 adds r0, #0x78 strh r1, [r0] ldrb r0, [r2] lsrs r0, r0, #1 ldrh r1, [r5, #0x32] subs r1, r1, r0 subs r2, #9 strh r1, [r2] movs r0, #0x2e ldrsh r1, [r5, r0] ldr r2, _08098BD8 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r6, #0x32 ldrsh r0, [r5, r6] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r6, r5, #0 adds r6, #0x80 strh r1, [r6] adds r7, r5, #0 adds r7, #0x38 strb r4, [r7] adds r0, r5, #0 bl UpdateSpriteOrderAndFlip adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] ldrb r0, [r5, #0xa] cmp r0, #0 bne _08098BCA ldr r0, _08098BDC @ =0x00004074 ldrh r1, [r6] subs r1, #0x40 ldrb r2, [r7] bl UpdateCollisionLayer _08098BCA: adds r0, r5, #0 bl sub_08098BE8 pop {r4, r5, r6, r7, pc} .align 2, 0 _08098BD4: .4byte gUnk_0812366C _08098BD8: .4byte gRoomControls _08098BDC: .4byte 0x00004074 thumb_func_start sub_08098BE0 sub_08098BE0: @ 0x08098BE0 push {lr} bl sub_08098BE8 pop {pc} thumb_func_start sub_08098BE8 sub_08098BE8: @ 0x08098BE8 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r6, _08098C28 @ =gLinkState ldr r0, [r6, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _08098C26 ldr r4, _08098C2C @ =gLinkEntity adds r0, r5, #0 adds r1, r4, #0 bl sub_08098C30 cmp r0, #0 beq _08098C26 bl sub_08079F8C cmp r0, #0 beq _08098C26 movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _08098C26 movs r0, #1 strb r0, [r6, #0x14] adds r0, r5, #0 adds r0, #0x80 ldrh r1, [r0] adds r0, r4, #0 bl sub_0807AAF8 _08098C26: pop {r4, r5, r6, pc} .align 2, 0 _08098C28: .4byte gLinkState _08098C2C: .4byte gLinkEntity thumb_func_start sub_08098C30 sub_08098C30: @ 0x08098C30 push {r4, lr} adds r3, r0, #0 movs r4, #0 movs r0, #0x2e ldrsh r2, [r1, r0] adds r0, r3, #0 adds r0, #0x78 ldrh r0, [r0] subs r2, r2, r0 movs r0, #0x32 ldrsh r1, [r1, r0] adds r0, r3, #0 adds r0, #0x7a ldrh r0, [r0] subs r1, r1, r0 adds r0, r3, #0 adds r0, #0x82 ldrb r0, [r0] cmp r2, r0 bhi _08098C64 adds r0, r3, #0 adds r0, #0x83 ldrb r0, [r0] cmp r1, r0 bhi _08098C64 movs r4, #1 _08098C64: adds r0, r4, #0 pop {r4, pc} thumb_func_start sub_08098C68 sub_08098C68: @ 0x08098C68 push {lr} ldr r2, _08098C7C @ =gUnk_08123674 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08098C7C: .4byte gUnk_08123674 thumb_func_start sub_08098C80 sub_08098C80: @ 0x08098C80 push {r4, r5, r6, lr} adds r4, r0, #0 movs r0, #0 movs r5, #1 strb r5, [r4, #0xc] strb r0, [r4, #0xe] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _08098CC8 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r6, #0x32 ldrsh r0, [r4, r6] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r0, r4, #0 adds r0, #0x80 strh r1, [r0] ldr r0, _08098CCC @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _08098CD0 adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] b _08098CD6 .align 2, 0 _08098CC8: .4byte gRoomControls _08098CCC: .4byte gLinkState _08098CD0: adds r0, r4, #0 adds r0, #0x38 strb r5, [r0] _08098CD6: adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r0, r4, #0 adds r0, #0x80 ldrh r1, [r0] subs r1, #0x40 movs r0, #0x47 movs r2, #1 bl sub_08000148 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start nullsub_124 nullsub_124: @ 0x08098CF0 bx lr .align 2, 0 thumb_func_start sub_08098CF4 sub_08098CF4: @ 0x08098CF4 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xa] cmp r0, #0 bne _08098D14 ldr r0, _08098D10 @ =gUnk_0812367C ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 b _08098D1A .align 2, 0 _08098D10: .4byte gUnk_0812367C _08098D14: adds r0, r2, #0 bl sub_08098E3C _08098D1A: pop {pc} thumb_func_start sub_08098D1C sub_08098D1C: @ 0x08098D1C push {r4, r5, lr} adds r4, r0, #0 movs r5, #1 strb r5, [r4, #0xc] ldr r0, _08098D40 @ =0x0000FFF0 strh r0, [r4, #0x36] adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] cmp r0, #0 beq _08098D44 bl sub_0807CBE4 cmp r0, #0 bne _08098D44 strb r5, [r4, #0xc] b _08098D5A .align 2, 0 _08098D40: .4byte 0x0000FFF0 _08098D44: movs r0, #3 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #7 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 bl sub_08098E88 _08098D5A: adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 adds r0, r4, #0 movs r1, #0 bl LoadAnimation pop {r4, r5, pc} thumb_func_start sub_08098D6C sub_08098D6C: @ 0x08098D6C push {r4, lr} adds r4, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08098D9A movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x2d strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #0x43 movs r2, #0 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _08098D9A ldrh r0, [r1, #0x32] adds r0, #8 strh r0, [r1, #0x32] _08098D9A: pop {r4, pc} thumb_func_start sub_08098D9C sub_08098D9C: @ 0x08098D9C push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xe] subs r0, #1 strb r0, [r2, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08098DC2 movs r0, #3 strb r0, [r2, #0xc] ldrb r1, [r2, #0x18] subs r0, #7 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r2, #0x18] adds r0, r2, #0 bl sub_08098E88 _08098DC2: pop {pc} thumb_func_start sub_08098DC4 sub_08098DC4: @ 0x08098DC4 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r6, _08098E2C @ =gLinkEntity adds r1, r6, #0 movs r2, #8 movs r3, #8 bl sub_0800419C cmp r0, #0 beq _08098E24 adds r0, r5, #0 adds r1, r6, #0 bl CopyPosition adds r0, r5, #0 bl sub_08004542 adds r0, r6, #0 bl sub_08004542 adds r0, r6, #0 adds r0, #0x38 movs r4, #1 strb r4, [r0] adds r0, r5, #0 adds r1, r6, #0 bl sub_0806FAB0 ldr r1, _08098E30 @ =gLinkState movs r0, #0x1f strb r0, [r1, #0xc] adds r0, r1, #0 adds r0, #0x38 strb r4, [r0] ldrb r0, [r5, #0xb] adds r1, #0x39 strb r0, [r1] movs r1, #4 strb r1, [r5, #0xc] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #1 bne _08098E20 movs r0, #0x23 bl sub_0807CD04 _08098E20: bl sub_08077B20 _08098E24: adds r0, r5, #0 bl sub_080042B8 pop {r4, r5, r6, pc} .align 2, 0 _08098E2C: .4byte gLinkEntity _08098E30: .4byte gLinkState thumb_func_start sub_08098E34 sub_08098E34: @ 0x08098E34 push {lr} bl sub_080042B8 pop {pc} thumb_func_start sub_08098E3C sub_08098E3C: @ 0x08098E3C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _08098E5E movs r2, #1 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] ldrb r1, [r4, #0xa] adds r0, r4, #0 bl LoadAnimation _08098E5E: ldrb r1, [r4, #0xa] movs r0, #2 ands r0, r1 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 lsls r0, r0, #1 ldr r1, _08098E84 @ =gUnk_08123690 adds r0, r0, r1 ldrh r1, [r0] ldrh r2, [r0, #2] adds r0, r4, #0 movs r3, #0 bl sub_0805EC9C adds r0, r4, #0 bl sub_080042B8 pop {r4, pc} .align 2, 0 _08098E84: .4byte gUnk_08123690 thumb_func_start sub_08098E88 sub_08098E88: @ 0x08098E88 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0x82 movs r1, #1 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08098EB0 ldr r3, _08098ED8 @ =0xFFFF0000 adds r0, r5, #0 adds r1, r4, #0 movs r2, #0 bl PositionRelative adds r1, r4, #0 adds r1, #0x63 movs r0, #8 strb r0, [r1] _08098EB0: movs r0, #0x82 movs r1, #2 movs r2, #0 bl CreateObject adds r4, r0, #0 cmp r4, #0 beq _08098ED4 ldr r3, _08098EDC @ =0xFFFE0000 adds r0, r5, #0 adds r1, r4, #0 movs r2, #0 bl PositionRelative adds r1, r4, #0 adds r1, #0x63 movs r0, #0x10 strb r0, [r1] _08098ED4: pop {r4, r5, pc} .align 2, 0 _08098ED8: .4byte 0xFFFF0000 _08098EDC: .4byte 0xFFFE0000 thumb_func_start sub_08098EE0 sub_08098EE0: @ 0x08098EE0 push {lr} ldr r2, _08098EF4 @ =gUnk_081236DC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08098EF4: .4byte gUnk_081236DC thumb_func_start sub_08098EF8 sub_08098EF8: @ 0x08098EF8 push {lr} adds r3, r0, #0 adds r3, #0x29 ldrb r2, [r3] movs r1, #8 rsbs r1, r1, #0 ands r1, r2 movs r2, #5 orrs r1, r2 strb r1, [r3] bl sub_08098FCC pop {pc} .align 2, 0 thumb_func_start sub_08098F14 sub_08098F14: @ 0x08098F14 push {r4, r5, r6, lr} adds r5, r0, #0 bl sub_080990EC cmp r0, #0 beq _08098F84 movs r6, #0 movs r0, #2 strb r0, [r5, #0xc] adds r0, r5, #0 adds r0, #0x74 ldrh r0, [r0] adds r1, r5, #0 adds r1, #0x70 ldrh r1, [r1] adds r4, r5, #0 adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer adds r0, r5, #0 adds r0, #0x76 ldrh r0, [r0] adds r1, r5, #0 adds r1, #0x72 ldrh r1, [r1] ldrb r2, [r4] bl UpdateCollisionLayer movs r0, #0x99 lsls r0, r0, #1 bl sub_08004488 adds r0, r5, #0 movs r1, #0x1e bl sub_0805E4E0 bl sub_08079F8C cmp r0, #0 beq _08098F84 ldr r2, _08098F88 @ =gLinkState movs r0, #0x98 strb r0, [r2, #6] movs r0, #5 strb r0, [r2, #0xc] ldr r0, [r2, #0x30] movs r1, #1 orrs r0, r1 str r0, [r2, #0x30] ldr r1, _08098F8C @ =gLinkEntity strh r6, [r1, #0x2c] strh r6, [r1, #0x30] ldrb r0, [r1, #0x14] lsls r0, r0, #2 strb r0, [r1, #0x15] _08098F84: pop {r4, r5, r6, pc} .align 2, 0 _08098F88: .4byte gLinkState _08098F8C: .4byte gLinkEntity thumb_func_start sub_08098F90 sub_08098F90: @ 0x08098F90 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08098FC8 ldrb r0, [r4, #0xb] cmp r0, #0 bne _08098FB8 adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 b _08098FC2 _08098FB8: adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CD48 _08098FC2: adds r0, r4, #0 bl sub_08098FCC _08098FC8: pop {r4, pc} .align 2, 0 thumb_func_start sub_08098FCC sub_08098FCC: @ 0x08098FCC push {lr} movs r1, #1 strb r1, [r0, #0xc] adds r2, r0, #0 adds r2, #0x84 movs r1, #0x3c strh r1, [r2] bl sub_08098FE0 pop {pc} thumb_func_start sub_08098FE0 sub_08098FE0: @ 0x08098FE0 push {r4, r5, r6, r7, lr} adds r6, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _0809906C strb r0, [r6, #0xb] movs r0, #0x2e ldrsh r2, [r6, r0] ldr r1, _08099060 @ =gRoomControls ldrh r0, [r1, #6] subs r2, r2, r0 asrs r2, r2, #4 movs r3, #0x3f ands r2, r3 movs r4, #0x32 ldrsh r0, [r6, r4] ldrh r1, [r1, #8] adds r1, #0x10 subs r0, r0, r1 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r2, r0 adds r5, r6, #0 adds r5, #0x70 strh r2, [r5] subs r2, #0x40 adds r7, r6, #0 adds r7, #0x72 strh r2, [r7] ldrh r0, [r5] adds r4, r6, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_080001DA adds r1, r6, #0 adds r1, #0x74 strh r0, [r1] ldrh r0, [r7] ldrb r1, [r4] bl sub_080001DA adds r1, r6, #0 adds r1, #0x76 strh r0, [r1] ldr r0, _08099064 @ =0x00004057 ldrh r1, [r5] ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _08099068 @ =0x00004058 ldrh r1, [r7] ldrb r2, [r4] bl UpdateCollisionLayer adds r0, r6, #0 movs r1, #1 bl UpdateSprite b _080990DC .align 2, 0 _08099060: .4byte gRoomControls _08099064: .4byte 0x00004057 _08099068: .4byte 0x00004058 _0809906C: movs r0, #1 strb r0, [r6, #0xb] movs r0, #0x2e ldrsh r1, [r6, r0] ldr r2, _080990E0 @ =gRoomControls ldrh r0, [r2, #6] adds r0, #0x10 subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r4, #0x32 ldrsh r0, [r6, r4] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r5, r6, #0 adds r5, #0x70 strh r1, [r5] subs r1, #1 adds r7, r6, #0 adds r7, #0x72 strh r1, [r7] ldrh r0, [r5] adds r4, r6, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_080001DA adds r1, r6, #0 adds r1, #0x74 strh r0, [r1] ldrh r0, [r7] ldrb r1, [r4] bl sub_080001DA adds r1, r6, #0 adds r1, #0x76 strh r0, [r1] ldr r0, _080990E4 @ =0x00004055 ldrh r1, [r5] ldrb r2, [r4] bl UpdateCollisionLayer ldr r0, _080990E8 @ =0x00004056 ldrh r1, [r7] ldrb r2, [r4] bl UpdateCollisionLayer adds r0, r6, #0 movs r1, #0 bl UpdateSprite _080990DC: pop {r4, r5, r6, r7, pc} .align 2, 0 _080990E0: .4byte gRoomControls _080990E4: .4byte 0x00004055 _080990E8: .4byte 0x00004056 thumb_func_start sub_080990EC sub_080990EC: @ 0x080990EC push {r4, r5, r6, lr} adds r4, r0, #0 adds r6, r4, #0 adds r6, #0x72 ldrh r0, [r6] adds r5, r4, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080001DA ldr r1, _0809911C @ =0x00004059 cmp r0, r1 bne _08099140 adds r1, r4, #0 adds r1, #0x84 ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _08099120 movs r0, #1 b _08099156 .align 2, 0 _0809911C: .4byte 0x00004059 _08099120: adds r0, r4, #0 bl sub_08099158 ldr r1, _0809913C @ =gUnk_081236E8 ldrb r0, [r4, #0xb] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] ldrh r1, [r6] ldrb r2, [r5] bl UpdateCollisionLayer b _08099154 .align 2, 0 _0809913C: .4byte gUnk_081236E8 _08099140: adds r1, r4, #0 adds r1, #0x84 movs r2, #0 movs r0, #0x3c strh r0, [r1] adds r0, r4, #0 adds r0, #0x62 strb r2, [r0] adds r0, #1 strb r2, [r0] _08099154: movs r0, #0 _08099156: pop {r4, r5, r6, pc} thumb_func_start sub_08099158 sub_08099158: @ 0x08099158 push {r4, lr} adds r3, r0, #0 ldrb r0, [r3, #0xb] ldr r4, _08099198 @ =gUnk_081236F4 cmp r0, #0 bne _08099166 ldr r4, _0809919C @ =gUnk_081236EC _08099166: adds r2, r3, #0 adds r2, #0x84 ldrh r0, [r2] lsrs r0, r0, #2 movs r1, #6 ands r0, r1 adds r4, r4, r0 ldrb r0, [r4] adds r1, r3, #0 adds r1, #0x62 strb r0, [r1] ldrb r1, [r4, #1] adds r0, r3, #0 adds r0, #0x63 strb r1, [r0] ldrh r1, [r2] movs r0, #3 ands r0, r1 cmp r0, #0 bne _08099194 ldr r0, _080991A0 @ =0x00000131 bl sub_08004488 _08099194: pop {r4, pc} .align 2, 0 _08099198: .4byte gUnk_081236F4 _0809919C: .4byte gUnk_081236EC _080991A0: .4byte 0x00000131 thumb_func_start sub_080991A4 sub_080991A4: @ 0x080991A4 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xa] cmp r0, #2 bhi _080991C4 ldr r0, _080991C0 @ =gUnk_08123734 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 b _080991CA .align 2, 0 _080991C0: .4byte gUnk_08123734 _080991C4: adds r0, r2, #0 bl sub_080996AC _080991CA: pop {pc} thumb_func_start sub_080991CC sub_080991CC: @ 0x080991CC push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #2 bgt _080991EC cmp r0, #0 blt _080991EC adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _080991EC bl sub_0805E780 _080991EC: movs r2, #1 strb r2, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] adds r1, r4, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #4 movs r0, #0x48 strb r0, [r1] adds r0, r4, #0 adds r0, #0x3f strb r2, [r0] subs r1, #5 movs r0, #0x80 strb r0, [r1] ldr r0, _08099244 @ =gUnk_080FD408 str r0, [r4, #0x48] adds r0, r4, #0 bl sub_08099468 ldrb r1, [r4, #0xa] adds r0, r4, #0 bl UpdateSprite movs r0, #0x84 movs r1, #3 movs r2, #0 bl CreateObject cmp r0, #0 beq _08099242 str r4, [r0, #0x50] _08099242: pop {r4, pc} .align 2, 0 _08099244: .4byte gUnk_080FD408 thumb_func_start sub_08099248 sub_08099248: @ 0x08099248 push {r4, r5, r6, r7, lr} adds r4, r0, #0 bl sub_0809963C cmp r0, #0 beq _08099280 movs r1, #0 movs r0, #3 strb r0, [r4, #0xc] strb r1, [r4, #0xe] ldr r0, _0809927C @ =0x000001B3 bl sub_08004488 adds r0, r4, #0 bl sub_08099330 ldrb r0, [r4, #0xa] cmp r0, #0 bne _0809930E adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 b _0809930E .align 2, 0 _0809927C: .4byte 0x000001B3 _08099280: adds r0, r4, #0 bl sub_0800442E cmp r0, #0 bne _0809930E adds r7, r4, #0 adds r7, #0x70 ldrh r0, [r7] adds r6, r4, #0 adds r6, #0x38 ldrb r1, [r6] bl sub_080002B0 adds r5, r0, #0 ldr r0, _080992B8 @ =0x0000405A cmp r5, r0 beq _0809930E adds r0, r5, #0 bl sub_08099618 cmp r0, #1 beq _080992BC cmp r0, #1 blo _080992DC cmp r0, #2 beq _08099308 b _0809930E .align 2, 0 _080992B8: .4byte 0x0000405A _080992BC: movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x16 strb r0, [r4, #0xe] adds r0, r5, #0 subs r0, #0x5b movs r1, #3 ands r0, r1 lsls r0, r0, #3 strb r0, [r4, #0x15] movs r0, #0x20 strh r0, [r4, #0x24] adds r0, r4, #0 bl sub_080994B8 b _0809930E _080992DC: movs r0, #0xf movs r1, #0xd movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _080992F2 adds r0, r4, #0 bl CopyPosition _080992F2: adds r0, r4, #0 adds r0, #0x6c ldrh r0, [r0] ldrh r1, [r7] ldrb r2, [r6] bl UpdateCollisionLayer adds r0, r4, #0 bl sub_0805E7BC b _0809930E _08099308: adds r0, r4, #0 adds r0, #0x6c strh r5, [r0] _0809930E: pop {r4, r5, r6, r7, pc} thumb_func_start sub_08099310 sub_08099310: @ 0x08099310 push {r4, lr} adds r4, r0, #0 bl sub_0809953C cmp r0, #0 beq _0809932E movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_08099468 movs r0, #0xd9 lsls r0, r0, #1 bl sub_08004488 _0809932E: pop {r4, pc} thumb_func_start sub_08099330 sub_08099330: @ 0x08099330 push {r4, lr} adds r4, r0, #0 bl sub_0809963C adds r1, r0, #0 cmp r1, #0 bne _0809935E ldrb r0, [r4, #0xe] cmp r0, #1 bls _0809934A subs r0, #2 strb r0, [r4, #0xe] b _0809934C _0809934A: strb r1, [r4, #0xe] _0809934C: ldrb r0, [r4, #0xe] cmp r0, #0 bne _08099364 movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0805EC60 b _080993CA _0809935E: ldrb r0, [r4, #0xe] adds r0, #1 strb r0, [r4, #0xe] _08099364: movs r1, #0x80 lsls r1, r1, #1 ldr r2, _0809939C @ =gUnk_08123748 ldrb r0, [r4, #0xe] lsrs r0, r0, #5 lsls r0, r0, #1 adds r0, r0, r2 ldrh r2, [r0] adds r0, r4, #0 movs r3, #0 bl sub_0805EC9C ldrb r0, [r4, #0xa] cmp r0, #1 bne _080993A0 adds r0, r4, #0 adds r0, #0x86 ldrh r3, [r0] adds r0, r4, #0 movs r1, #0x53 movs r2, #0 bl sub_080A2A3C movs r0, #0x72 bl PlaySFX b _080993BA .align 2, 0 _0809939C: .4byte gUnk_08123748 _080993A0: cmp r0, #2 bne _080993BA adds r0, r4, #0 adds r0, #0x86 ldrh r3, [r0] adds r0, r4, #0 movs r1, #0x52 movs r2, #0 bl sub_080A2A3C movs r0, #0x72 bl PlaySFX _080993BA: movs r0, #4 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] _080993CA: pop {r4, pc} thumb_func_start sub_080993CC sub_080993CC: @ 0x080993CC push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xe] subs r1, r0, #1 strb r1, [r5, #0xe] lsls r0, r1, #0x18 cmp r0, #0 bne _080993E2 bl sub_0805E780 b _08099466 _080993E2: lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x30 bne _08099400 adds r0, r5, #0 adds r0, #0x6c ldrh r0, [r0] adds r1, r5, #0 adds r1, #0x70 ldrh r1, [r1] adds r2, r5, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer _08099400: movs r1, #0x80 lsls r1, r1, #1 ldrb r0, [r5, #0xe] movs r2, #0x3c subs r2, r2, r0 lsls r2, r2, #5 adds r2, r2, r1 adds r0, r5, #0 movs r3, #0 bl sub_0805EC9C ldrb r1, [r5, #0xe] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08099466 movs r0, #0xf movs r1, #0x11 movs r2, #0x40 bl CreateObject adds r6, r0, #0 cmp r6, #0 beq _08099466 bl Random adds r4, r0, #0 asrs r0, r4, #0x10 movs r1, #9 bl __modsi3 adds r2, r0, #0 subs r2, #4 movs r3, #0xf ands r3, r4 adds r4, r6, #0 adds r4, #0x29 ldrb r1, [r4] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4] lsls r2, r2, #0x10 rsbs r3, r3, #0 lsls r3, r3, #0x10 adds r0, r5, #0 adds r1, r6, #0 bl PositionRelative _08099466: pop {r4, r5, r6, pc} thumb_func_start sub_08099468 sub_08099468: @ 0x08099468 push {r4, r5, r6, lr} adds r6, r0, #0 movs r0, #0x2e ldrsh r1, [r6, r0] ldr r2, _080994B0 @ =gRoomControls ldrh r0, [r2, #6] subs r1, r1, r0 asrs r1, r1, #4 movs r3, #0x3f ands r1, r3 movs r4, #0x32 ldrsh r0, [r6, r4] ldrh r2, [r2, #8] subs r0, r0, r2 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r1, r0 adds r4, r6, #0 adds r4, #0x70 strh r1, [r4] ldrh r0, [r4] adds r5, r6, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080001DA adds r1, r6, #0 adds r1, #0x6c strh r0, [r1] ldr r0, _080994B4 @ =0x0000405A ldrh r1, [r4] ldrb r2, [r5] bl UpdateCollisionLayer pop {r4, r5, r6, pc} .align 2, 0 _080994B0: .4byte gRoomControls _080994B4: .4byte 0x0000405A thumb_func_start sub_080994B8 sub_080994B8: @ 0x080994B8 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r0, _08099530 @ =0x000001B1 bl sub_08004488 adds r0, r5, #0 adds r0, #0x6c ldrh r0, [r0] adds r6, r5, #0 adds r6, #0x70 ldrh r1, [r6] adds r4, r5, #0 adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer ldrb r0, [r4] cmp r0, #2 bne _080994F8 ldrh r0, [r6] movs r1, #1 bl sub_080002B0 ldr r1, _08099534 @ =0x0000405A cmp r0, r1 bne _080994F8 movs r0, #0xc4 lsls r0, r0, #2 ldrh r1, [r6] movs r2, #1 bl sub_08000152 _080994F8: adds r2, r5, #0 adds r2, #0x70 ldr r1, _08099538 @ =gUnk_080B4488 ldrb r0, [r5, #0x15] lsrs r0, r0, #3 lsls r0, r0, #1 adds r0, r0, r1 movs r1, #0 ldrsh r0, [r0, r1] ldrh r2, [r2] adds r0, r0, r2 adds r1, r5, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002B0 lsls r0, r0, #0x10 lsrs r0, r0, #0x10 cmp r0, #0x79 beq _08099524 cmp r0, #0x77 bne _0809952C _08099524: adds r1, r5, #0 adds r1, #0x63 movs r0, #0xfe strb r0, [r1] _0809952C: pop {r4, r5, r6, pc} .align 2, 0 _08099530: .4byte 0x000001B1 _08099534: .4byte 0x0000405A _08099538: .4byte gUnk_080B4488 thumb_func_start sub_0809953C sub_0809953C: @ 0x0809953C push {r4, lr} adds r4, r0, #0 bl sub_0800442E cmp r0, #0 bne _08099612 adds r0, r4, #0 bl sub_080AEFE0 adds r0, r4, #0 bl sub_0800445C ldrb r1, [r4, #0xe] cmp r1, #0 beq _08099570 ldrh r0, [r4, #0x24] adds r0, #0x10 strh r0, [r4, #0x24] subs r0, r1, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08099570 movs r0, #0x80 lsls r0, r0, #2 strh r0, [r4, #0x24] _08099570: ldrb r0, [r4, #0x15] lsrs r0, r0, #3 cmp r0, #1 beq _080995A0 cmp r0, #1 bgt _08099582 cmp r0, #0 beq _08099588 b _080995E6 _08099582: cmp r0, #2 beq _080995BA b _080995E6 _08099588: ldrh r1, [r4, #0x2a] movs r0, #0xe ands r0, r1 cmp r0, #0 beq _08099612 ldrh r1, [r4, #0x32] movs r0, #0xf ands r0, r1 subs r0, #7 cmp r0, #2 bls _080995D0 b _080995DE _080995A0: ldrh r1, [r4, #0x2a] movs r0, #0xe0 lsls r0, r0, #8 ands r0, r1 cmp r0, #0 beq _08099612 ldrh r1, [r4, #0x2e] movs r0, #0xf ands r0, r1 subs r0, #7 cmp r0, #2 bls _080995FE b _080995DE _080995BA: ldrh r1, [r4, #0x2a] movs r0, #0xe0 ands r0, r1 cmp r0, #0 beq _08099612 ldrh r1, [r4, #0x32] movs r0, #0xf ands r0, r1 subs r0, #7 cmp r0, #2 bhi _080995DE _080995D0: movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 adds r0, #8 strh r0, [r4, #0x32] movs r0, #1 b _08099614 _080995DE: adds r0, r4, #0 bl sub_0809969C b _08099612 _080995E6: ldrh r1, [r4, #0x2a] movs r0, #0xe0 lsls r0, r0, #4 ands r0, r1 cmp r0, #0 beq _08099612 ldrh r1, [r4, #0x2e] movs r0, #0xf ands r0, r1 subs r0, #7 cmp r0, #2 bhi _0809960C _080995FE: movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 adds r0, #8 strh r0, [r4, #0x2e] movs r0, #1 b _08099614 _0809960C: adds r0, r4, #0 bl sub_0809969C _08099612: movs r0, #0 _08099614: pop {r4, pc} .align 2, 0 thumb_func_start sub_08099618 sub_08099618: @ 0x08099618 push {lr} adds r2, r0, #0 ldr r1, _08099620 @ =gUnk_08123750 b _08099630 .align 2, 0 _08099620: .4byte gUnk_08123750 _08099624: ldrh r0, [r1] cmp r0, r2 bne _0809962E ldrh r0, [r1, #2] b _08099638 _0809962E: adds r1, #4 _08099630: ldrh r0, [r1] cmp r0, #0 bne _08099624 movs r0, #0 _08099638: pop {pc} .align 2, 0 thumb_func_start sub_0809963C sub_0809963C: @ 0x0809963C push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xb] cmp r0, #0 beq _08099684 bl sub_0804B128 adds r4, r0, #0 ldrh r0, [r4] bl sub_0807CBE4 cmp r0, #0 beq _08099684 ldr r0, _08099694 @ =gRoomControls ldrh r1, [r0, #6] ldrh r2, [r4, #2] adds r1, r1, r2 lsls r1, r1, #0x10 lsrs r1, r1, #0x10 ldrh r0, [r0, #8] ldrh r6, [r4, #4] adds r0, r0, r6 lsls r0, r0, #0x10 lsrs r3, r0, #0x10 ldrh r2, [r4, #6] movs r6, #0x2e ldrsh r0, [r5, r6] subs r0, r0, r1 cmp r2, r0 blo _08099684 ldrh r1, [r4, #8] movs r2, #0x32 ldrsh r0, [r5, r2] subs r0, r0, r3 cmp r1, r0 bhs _08099698 _08099684: adds r0, r5, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x87 beq _08099698 movs r0, #0 b _0809969A .align 2, 0 _08099694: .4byte gRoomControls _08099698: movs r0, #1 _0809969A: pop {r4, r5, r6, pc} thumb_func_start sub_0809969C sub_0809969C: @ 0x0809969C push {lr} movs r1, #0xd movs r2, #0 bl CreateFx bl sub_0805E780 pop {pc} thumb_func_start sub_080996AC sub_080996AC: @ 0x080996AC push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] ldr r0, [r0, #4] cmp r0, #0 bne _080996BC bl sub_0805E780 _080996BC: ldrb r0, [r4, #0xc] cmp r0, #0 bne _080996CE movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #3 bl UpdateSprite _080996CE: ldr r0, [r4, #0x50] ldrb r0, [r0, #0xc] cmp r0, #2 bhi _08099726 ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08099706 movs r0, #0 strb r0, [r2] bl Random movs r1, #0x78 ands r0, r1 adds r0, #0x78 adds r1, r4, #0 adds r1, #0x59 strb r0, [r1] _08099706: adds r0, r4, #0 bl sub_08004274 ldr r0, [r4, #0x50] adds r1, r4, #0 bl sub_0806FA6C ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x63 ldrb r0, [r1] subs r0, #0x11 strb r0, [r1] b _08099730 _08099726: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] _08099730: pop {r4, pc} .align 2, 0 thumb_func_start sub_08099734 sub_08099734: @ 0x08099734 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xa] cmp r0, #3 bhi _08099754 ldr r0, _08099750 @ =gUnk_081237A0 ldrb r1, [r2, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r2, #0 bl _call_via_r1 b _0809975A .align 2, 0 _08099750: .4byte gUnk_081237A0 _08099754: adds r0, r2, #0 bl sub_08099D30 _0809975A: pop {pc} thumb_func_start sub_0809975C sub_0809975C: @ 0x0809975C push {r4, lr} adds r4, r0, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _08099770 bl sub_0805E780 _08099770: movs r2, #1 strb r2, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x11] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] adds r1, r4, #0 adds r1, #0x3c movs r0, #7 strb r0, [r1] adds r1, #4 movs r0, #0x48 strb r0, [r1] adds r0, r4, #0 adds r0, #0x3f strb r2, [r0] subs r1, #5 movs r0, #0x80 strb r0, [r1] ldr r0, _080997C8 @ =gUnk_080FD190 str r0, [r4, #0x48] adds r0, r4, #0 bl sub_08099910 ldrb r1, [r4, #0xa] adds r0, r4, #0 bl UpdateSprite movs r0, #0x85 movs r1, #4 movs r2, #0 bl CreateObject cmp r0, #0 beq _080997C6 str r4, [r0, #0x50] _080997C6: pop {r4, pc} .align 2, 0 _080997C8: .4byte gUnk_080FD190 thumb_func_start sub_080997CC sub_080997CC: @ 0x080997CC push {r4, lr} adds r4, r0, #0 bl sub_0809963C cmp r0, #0 beq _080997EC movs r0, #0 movs r1, #2 strb r1, [r4, #0xc] strb r0, [r4, #0xe] ldr r0, _080997F0 @ =0x000001B3 bl sub_08004488 adds r0, r4, #0 bl sub_080997F4 _080997EC: pop {r4, pc} .align 2, 0 _080997F0: .4byte 0x000001B3 thumb_func_start sub_080997F4 sub_080997F4: @ 0x080997F4 push {r4, lr} adds r4, r0, #0 bl sub_0809963C adds r1, r0, #0 cmp r1, #0 bne _08099822 ldrb r0, [r4, #0xe] cmp r0, #1 bls _0809980E subs r0, #2 strb r0, [r4, #0xe] b _08099810 _0809980E: strb r1, [r4, #0xe] _08099810: ldrb r0, [r4, #0xe] cmp r0, #0 bne _08099828 movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0805EC60 b _0809987C _08099822: ldrb r0, [r4, #0xe] adds r0, #1 strb r0, [r4, #0xe] _08099828: ldr r1, _08099858 @ =gUnk_081237B0 ldrb r0, [r4, #0xe] lsrs r0, r0, #5 lsls r0, r0, #1 adds r0, r0, r1 ldrh r2, [r0] movs r1, #0x80 lsls r1, r1, #1 adds r0, r4, #0 movs r3, #0 bl sub_0805EC9C ldrb r0, [r4, #0xa] cmp r0, #1 beq _0809986C cmp r0, #2 beq _0809985C adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 b _0809986C .align 2, 0 _08099858: .4byte gUnk_081237B0 _0809985C: adds r0, r4, #0 adds r0, #0x86 ldrh r3, [r0] adds r0, r4, #0 movs r1, #0x53 movs r2, #0 bl sub_080A2A3C _0809986C: movs r0, #3 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] _0809987C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08099880 sub_08099880: @ 0x08099880 push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xe] subs r1, r0, #1 strb r1, [r5, #0xe] lsls r0, r1, #0x18 cmp r0, #0 bne _08099896 bl sub_0805E780 b _0809990E _08099896: lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x30 bne _080998A4 adds r0, r5, #0 bl sub_08099C18 _080998A4: ldrb r0, [r5, #0xe] movs r4, #0x3c subs r4, r4, r0 lsls r4, r4, #5 movs r1, #0x80 lsls r1, r1, #1 adds r4, r4, r1 adds r0, r5, #0 adds r2, r4, #0 movs r3, #0 bl sub_0805EC9C adds r0, r5, #0 adds r1, r4, #0 movs r2, #2 movs r3, #0 bl sub_0806FCF4 movs r0, #0xf movs r1, #0x11 movs r2, #0x40 bl CreateObject adds r6, r0, #0 cmp r6, #0 beq _0809990E bl Random adds r4, r0, #0 asrs r0, r4, #0x10 movs r1, #0x21 bl __modsi3 adds r2, r0, #0 subs r2, #0x10 movs r0, #0xf ands r0, r4 subs r4, r0, #4 adds r3, r6, #0 adds r3, #0x29 ldrb r1, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r3] lsls r2, r2, #0x10 lsls r3, r4, #0x10 adds r0, r5, #0 adds r1, r6, #0 bl PositionRelative _0809990E: pop {r4, r5, r6, pc} thumb_func_start sub_08099910 sub_08099910: @ 0x08099910 push {r4, r5, r6, r7, lr} adds r4, r0, #0 movs r1, #0x2e ldrsh r0, [r4, r1] ldr r3, _08099968 @ =gRoomControls ldrh r1, [r3, #6] subs r0, r0, r1 asrs r6, r0, #4 movs r2, #0x3f ands r6, r2 movs r1, #0x32 ldrsh r0, [r4, r1] ldrh r1, [r3, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r6, r0 adds r0, r4, #0 adds r0, #0x6e strh r6, [r0] ldrh r2, [r4, #0x2e] movs r0, #8 adds r1, r0, #0 ands r1, r2 lsls r1, r1, #0x10 lsrs r1, r1, #0x13 ldrh r2, [r4, #0x32] ands r0, r2 lsls r0, r0, #0x10 asrs r0, r0, #0x12 lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r1, r0 adds r0, r4, #0 adds r0, #0x6c strh r1, [r0] cmp r1, #2 beq _08099A4C cmp r1, #2 bhi _0809996C cmp r1, #1 beq _080999A8 b _08099972 .align 2, 0 _08099968: .4byte gRoomControls _0809996C: cmp r1, #3 bne _08099972 b _08099AF0 _08099972: ldr r5, _080999A4 @ =0x00004022 adds r1, r6, #0 subs r1, #0x41 adds r4, #0x38 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 subs r1, #0x40 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer subs r1, r6, #1 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldrb r2, [r4] adds r0, r5, #0 adds r1, r6, #0 bl UpdateCollisionLayer b _08099BF0 .align 2, 0 _080999A4: .4byte 0x00004022 _080999A8: adds r5, r6, #0 subs r5, #0x41 lsls r0, r5, #0x10 lsrs r0, r0, #0x10 adds r4, #0x38 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099A40 @ =0x00004024 cmp r0, #0x12 bne _080999C0 adds r1, #0x55 _080999C0: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer ldr r7, _08099A44 @ =0x00004022 adds r1, r6, #0 subs r1, #0x40 ldrb r2, [r4] adds r0, r7, #0 bl UpdateCollisionLayer adds r5, r6, #0 subs r5, #0x3f lsls r0, r5, #0x10 lsrs r0, r0, #0x10 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099A48 @ =0x00004025 cmp r0, #0x12 bne _080999EE adds r1, #0x56 _080999EE: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer subs r5, r6, #1 lsls r0, r5, #0x10 lsrs r0, r0, #0x10 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099A40 @ =0x00004024 cmp r0, #0x12 bne _08099A0C adds r1, #0x55 _08099A0C: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer ldrb r2, [r4] adds r0, r7, #0 adds r1, r6, #0 bl UpdateCollisionLayer adds r5, r6, #1 adds r0, r5, #0 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099A48 @ =0x00004025 cmp r0, #0x12 bne _08099A32 adds r1, #0x56 _08099A32: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer b _08099BF0 .align 2, 0 _08099A40: .4byte 0x00004024 _08099A44: .4byte 0x00004022 _08099A48: .4byte 0x00004025 _08099A4C: adds r7, r6, #0 subs r7, #0x41 lsls r0, r7, #0x10 lsrs r0, r0, #0x10 adds r5, r4, #0 adds r5, #0x38 ldrb r1, [r5] bl sub_080002C8 ldr r1, _08099AE4 @ =0x00004023 cmp r0, #0x12 bne _08099A66 adds r1, #0x54 _08099A66: ldrb r2, [r5] adds r0, r1, #0 adds r1, r7, #0 bl UpdateCollisionLayer adds r4, r6, #0 subs r4, #0x40 lsls r0, r4, #0x10 lsrs r0, r0, #0x10 ldrb r1, [r5] bl sub_080002C8 ldr r1, _08099AE4 @ =0x00004023 cmp r0, #0x12 bne _08099A86 adds r1, #0x54 _08099A86: ldrb r2, [r5] adds r0, r1, #0 adds r1, r4, #0 bl UpdateCollisionLayer ldr r4, _08099AE8 @ =0x00004022 subs r1, r6, #1 ldrb r2, [r5] adds r0, r4, #0 bl UpdateCollisionLayer ldrb r2, [r5] adds r0, r4, #0 adds r1, r6, #0 bl UpdateCollisionLayer adds r4, r6, #0 adds r4, #0x3f adds r0, r4, #0 ldrb r1, [r5] bl sub_080002C8 ldr r1, _08099AEC @ =0x00004026 cmp r0, #0x12 bne _08099ABA adds r1, #0x56 _08099ABA: ldrb r2, [r5] adds r0, r1, #0 adds r1, r4, #0 bl UpdateCollisionLayer adds r4, r6, #0 adds r4, #0x40 adds r0, r4, #0 ldrb r1, [r5] bl sub_080002C8 ldr r1, _08099AEC @ =0x00004026 cmp r0, #0x12 bne _08099AD8 adds r1, #0x56 _08099AD8: ldrb r2, [r5] adds r0, r1, #0 adds r1, r4, #0 bl UpdateCollisionLayer b _08099BF0 .align 2, 0 _08099AE4: .4byte 0x00004023 _08099AE8: .4byte 0x00004022 _08099AEC: .4byte 0x00004026 _08099AF0: adds r5, r6, #0 subs r5, #0x41 lsls r0, r5, #0x10 lsrs r0, r0, #0x10 adds r4, #0x38 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099BF4 @ =0x00004027 cmp r0, #0x12 bne _08099B08 adds r1, #0x4e _08099B08: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer adds r5, r6, #0 subs r5, #0x40 lsls r0, r5, #0x10 lsrs r0, r0, #0x10 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099BF8 @ =0x00004023 cmp r0, #0x12 bne _08099B28 adds r1, #0x54 _08099B28: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer adds r5, r6, #0 subs r5, #0x3f lsls r0, r5, #0x10 lsrs r0, r0, #0x10 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099BFC @ =0x00004028 cmp r0, #0x12 bne _08099B48 adds r1, #0x4e _08099B48: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer subs r5, r6, #1 lsls r0, r5, #0x10 lsrs r0, r0, #0x10 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099C00 @ =0x00004024 cmp r0, #0x12 bne _08099B66 adds r1, #0x55 _08099B66: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer ldr r0, _08099C04 @ =0x00004022 ldrb r2, [r4] adds r1, r6, #0 bl UpdateCollisionLayer adds r5, r6, #1 adds r0, r5, #0 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099C08 @ =0x00004025 cmp r0, #0x12 bne _08099B8C adds r1, #0x56 _08099B8C: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer adds r5, r6, #0 adds r5, #0x3f adds r0, r5, #0 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099C0C @ =0x00004029 cmp r0, #0x12 bne _08099BAA adds r1, #0x4f _08099BAA: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer adds r5, r6, #0 adds r5, #0x40 adds r0, r5, #0 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099C10 @ =0x00004026 cmp r0, #0x12 bne _08099BC8 adds r1, #0x56 _08099BC8: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer adds r5, r6, #0 adds r5, #0x41 adds r0, r5, #0 ldrb r1, [r4] bl sub_080002C8 ldr r1, _08099C14 @ =0x0000402A cmp r0, #0x12 bne _08099BE6 adds r1, #0x50 _08099BE6: ldrb r2, [r4] adds r0, r1, #0 adds r1, r5, #0 bl UpdateCollisionLayer _08099BF0: pop {r4, r5, r6, r7, pc} .align 2, 0 _08099BF4: .4byte 0x00004027 _08099BF8: .4byte 0x00004023 _08099BFC: .4byte 0x00004028 _08099C00: .4byte 0x00004024 _08099C04: .4byte 0x00004022 _08099C08: .4byte 0x00004025 _08099C0C: .4byte 0x00004029 _08099C10: .4byte 0x00004026 _08099C14: .4byte 0x0000402A thumb_func_start sub_08099C18 sub_08099C18: @ 0x08099C18 push {r4, r5, lr} adds r1, r0, #0 adds r0, #0x6e ldrh r5, [r0] subs r0, #2 ldrh r0, [r0] cmp r0, #2 beq _08099C96 cmp r0, #2 bgt _08099C32 cmp r0, #1 beq _08099C60 b _08099C36 _08099C32: cmp r0, #3 beq _08099CD4 _08099C36: adds r0, r5, #0 subs r0, #0x41 adds r4, r1, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 subs r0, #0x40 ldrb r1, [r4] bl sub_0807BA8C subs r0, r5, #1 ldrb r1, [r4] bl sub_0807BA8C ldrb r1, [r4] adds r0, r5, #0 bl sub_0807BA8C b _08099D2C _08099C60: adds r0, r5, #0 subs r0, #0x41 adds r4, r1, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 subs r0, #0x40 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 subs r0, #0x3f ldrb r1, [r4] bl sub_0807BA8C subs r0, r5, #1 ldrb r1, [r4] bl sub_0807BA8C ldrb r1, [r4] adds r0, r5, #0 bl sub_0807BA8C adds r0, r5, #1 b _08099CCC _08099C96: adds r0, r5, #0 subs r0, #0x41 adds r4, r1, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 subs r0, #0x40 ldrb r1, [r4] bl sub_0807BA8C subs r0, r5, #1 ldrb r1, [r4] bl sub_0807BA8C ldrb r1, [r4] adds r0, r5, #0 bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x3f ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x40 _08099CCC: ldrb r1, [r4] bl sub_0807BA8C b _08099D2C _08099CD4: adds r0, r5, #0 subs r0, #0x41 adds r4, r1, #0 adds r4, #0x38 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 subs r0, #0x40 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 subs r0, #0x3f ldrb r1, [r4] bl sub_0807BA8C subs r0, r5, #1 ldrb r1, [r4] bl sub_0807BA8C ldrb r1, [r4] adds r0, r5, #0 bl sub_0807BA8C adds r0, r5, #1 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x3f ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x40 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x41 ldrb r1, [r4] bl sub_0807BA8C _08099D2C: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08099D30 sub_08099D30: @ 0x08099D30 push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x50] ldr r0, [r0, #4] cmp r0, #0 bne _08099D40 bl sub_0805E780 _08099D40: ldrb r0, [r4, #0xc] cmp r0, #0 bne _08099D6A movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #4 bl UpdateSprite ldr r0, [r4, #0x50] adds r1, r4, #0 bl sub_0806FA6C ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x63 ldrb r0, [r1] subs r0, #1 strb r0, [r1] _08099D6A: ldr r0, [r4, #0x50] ldrb r0, [r0, #0xc] cmp r0, #1 bhi _08099DAA ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08099DA2 movs r0, #0 strb r0, [r2] bl Random movs r1, #0x78 ands r0, r1 adds r0, #0x78 adds r1, r4, #0 adds r1, #0x59 strb r0, [r1] _08099DA2: adds r0, r4, #0 bl sub_08004274 b _08099DB4 _08099DAA: ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] _08099DB4: pop {r4, pc} .align 2, 0 thumb_func_start sub_08099DB8 sub_08099DB8: @ 0x08099DB8 push {lr} ldr r2, _08099DCC @ =gUnk_081237F8 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08099DCC: .4byte gUnk_081237F8 thumb_func_start sub_08099DD0 sub_08099DD0: @ 0x08099DD0 push {r4, r5, r6, lr} adds r4, r0, #0 adds r0, #0x38 movs r6, #0 movs r5, #1 strb r5, [r0] ldrb r0, [r4, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] strb r6, [r4, #0xd] movs r0, #0x46 bl GetInventoryValue cmp r0, #0 beq _08099E04 movs r0, #4 strb r0, [r4, #0xc] strb r6, [r4, #0x1e] b _08099E0E _08099E04: strb r5, [r4, #0xc] adds r0, r4, #0 movs r1, #0 bl UpdateSprite _08099E0E: pop {r4, r5, r6, pc} thumb_func_start sub_08099E10 sub_08099E10: @ 0x08099E10 push {r4, r5, lr} adds r4, r0, #0 movs r0, #0x74 bl sub_0807CBD0 cmp r0, #0 beq _08099E54 adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] adds r5, r0, #0 cmp r1, #1 bne _08099E3E ldrb r0, [r4, #0xd] cmp r0, #0 bne _08099E3E strb r0, [r5] adds r0, r4, #0 bl sub_08099ECC _08099E3E: ldrb r1, [r5] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08099E54 movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #1 bl UpdateSprite _08099E54: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08099E58 sub_08099E58: @ 0x08099E58 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08099E88 movs r0, #0x7f ands r0, r1 strb r0, [r2] ldrb r0, [r4, #0xe] adds r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #3 bne _08099E88 strb r0, [r4, #0xc] movs r0, #4 strb r0, [r4, #0x1e] _08099E88: pop {r4, pc} .align 2, 0 thumb_func_start sub_08099E8C sub_08099E8C: @ 0x08099E8C push {r4, lr} adds r4, r0, #0 ldr r1, _08099EC4 @ =gLinkEntity movs r2, #0xc movs r3, #0xc bl sub_080041A0 cmp r0, #0 beq _08099EC2 ldrb r0, [r4, #0xd] cmp r0, #0 bne _08099EB2 adds r0, r4, #0 bl sub_08099ECC adds r0, r4, #0 movs r1, #0x1e bl sub_0805E4E0 _08099EB2: movs r0, #0x75 bl sub_0807CBD0 cmp r0, #0 beq _08099EC2 movs r0, #7 bl sub_0805B390 _08099EC2: pop {r4, pc} .align 2, 0 _08099EC4: .4byte gLinkEntity thumb_func_start nullsub_534 nullsub_534: @ 0x08099EC8 bx lr .align 2, 0 thumb_func_start sub_08099ECC sub_08099ECC: @ 0x08099ECC push {r4, lr} movs r4, #0 movs r1, #1 strb r1, [r0, #0xd] ldr r1, _08099EF4 @ =gLinkEntity bl CopyPosition ldr r2, _08099EF8 @ =gLinkState movs r0, #3 strb r0, [r2, #0xc] adds r0, r2, #0 adds r0, #0x38 strb r4, [r0] ldr r0, [r2, #0x30] movs r1, #0x80 lsls r1, r1, #8 orrs r0, r1 str r0, [r2, #0x30] pop {r4, pc} .align 2, 0 _08099EF4: .4byte gLinkEntity _08099EF8: .4byte gLinkState thumb_func_start sub_08099EFC sub_08099EFC: @ 0x08099EFC push {lr} ldr r2, _08099F10 @ =gUnk_08123840 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08099F10: .4byte gUnk_08123840 thumb_func_start sub_08099F14 sub_08099F14: @ 0x08099F14 push {r4, r5, r6, r7, lr} adds r5, r0, #0 movs r0, #1 strb r0, [r5, #0xc] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r5, #0x24] ldrb r0, [r5, #0xa] cmp r0, #9 bls _08099F2A b _0809A1B6 _08099F2A: lsls r0, r0, #2 ldr r1, _08099F34 @ =_08099F38 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08099F34: .4byte _08099F38 _08099F38: @ jump table .4byte _08099F60 @ case 0 .4byte _08099F70 @ case 1 .4byte _08099F82 @ case 2 .4byte _0809A00C @ case 3 .4byte _0809A0AA @ case 4 .4byte _0809A0B0 @ case 5 .4byte _0809A058 @ case 6 .4byte _0809A11C @ case 7 .4byte _0809A132 @ case 8 .4byte _0809A1B0 @ case 9 _08099F60: adds r2, r5, #0 adds r2, #0x79 movs r0, #0 movs r1, #0x96 strb r1, [r2] strb r0, [r5, #0xe] movs r0, #0x1e strb r0, [r5, #0xf] _08099F70: adds r0, r5, #0 movs r1, #0 bl UpdateSprite movs r0, #0x92 lsls r0, r0, #1 bl sub_08004488 b _0809A1B6 _08099F82: ldr r0, [r5, #0x50] adds r0, #0x7b ldrb r0, [r0] adds r0, #0x80 rsbs r0, r0, #0 strb r0, [r5, #0x15] bl Random movs r1, #1 ands r1, r0 cmp r1, #0 beq _08099FCE bl Random adds r1, r0, #0 movs r0, #3 ands r1, r0 cmp r1, #1 beq _08099FBC cmp r1, #1 blo _08099FB6 cmp r1, #2 beq _08099FC2 cmp r1, #3 beq _08099FC8 b _08099FCE _08099FB6: ldrb r0, [r5, #0x15] subs r0, #0x10 b _08099FCC _08099FBC: ldrb r0, [r5, #0x15] adds r0, #0x10 b _08099FCC _08099FC2: ldrb r0, [r5, #0x15] subs r0, #8 b _08099FCC _08099FC8: ldrb r0, [r5, #0x15] adds r0, #8 _08099FCC: strb r0, [r5, #0x15] _08099FCE: bl Random movs r1, #0x3f ands r0, r1 movs r1, #0xf0 subs r1, r1, r0 strh r1, [r5, #0x24] lsls r1, r1, #0x10 asrs r1, r1, #0x11 lsls r1, r1, #8 ldrb r2, [r5, #0x15] adds r0, r5, #0 bl sub_0806F62C ldrh r1, [r5, #0x24] lsls r1, r1, #0x10 asrs r1, r1, #0x11 lsls r1, r1, #8 ldrb r2, [r5, #0x15] adds r0, r5, #0 bl sub_0806F62C adds r0, r5, #0 movs r1, #5 bl UpdateSprite movs r0, #0xa6 lsls r0, r0, #1 bl PlaySFX b _0809A1B6 _0809A00C: ldr r0, [r5, #0x50] adds r0, #0x7b ldrb r0, [r0] adds r0, #0x80 rsbs r0, r0, #0 strb r0, [r5, #0x15] movs r1, #0x90 lsls r1, r1, #7 ldrb r2, [r5, #0x15] adds r0, r5, #0 bl sub_0806F62C bl Random movs r1, #1 ands r1, r0 cmp r1, #0 beq _0809A040 bl Random movs r1, #0x3f ands r0, r1 ldrb r1, [r5, #0x15] adds r0, r0, r1 strb r0, [r5, #0x15] b _0809A04E _0809A040: bl Random movs r1, #0x3f ands r0, r1 ldrb r1, [r5, #0x15] subs r1, r1, r0 strb r1, [r5, #0x15] _0809A04E: adds r0, r5, #0 movs r1, #6 bl UpdateSprite b _0809A1B6 _0809A058: bl Random movs r1, #0x2f ands r1, r0 movs r4, #0x30 subs r4, r4, r1 lsls r4, r4, #8 bl Random movs r2, #0xff ands r2, r0 adds r0, r5, #0 adds r1, r4, #0 bl sub_0806F62C bl Random movs r1, #1 ands r1, r0 cmp r1, #0 beq _0809A092 bl Random movs r1, #0x3f ands r0, r1 ldrb r1, [r5, #0x15] adds r0, r0, r1 strb r0, [r5, #0x15] b _0809A0A0 _0809A092: bl Random movs r1, #0x3f ands r0, r1 ldrb r1, [r5, #0x15] subs r1, r1, r0 strb r1, [r5, #0x15] _0809A0A0: adds r0, r5, #0 movs r1, #5 bl UpdateSprite b _0809A1B6 _0809A0AA: movs r0, #0xc3 lsls r0, r0, #2 b _0809A1B4 _0809A0B0: adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 strb r0, [r2] movs r0, #0x18 str r0, [r5, #0x78] adds r7, r5, #0 adds r7, #0x76 movs r1, #0 movs r0, #0x80 lsls r0, r0, #3 strh r0, [r7] adds r4, r5, #0 adds r4, #0x74 strh r0, [r4] adds r6, r5, #0 adds r6, #0x7a strh r1, [r6] ldr r0, [r5, #0x50] adds r0, #0x7b ldrb r1, [r0] rsbs r1, r1, #0 lsls r1, r1, #0x18 ldr r3, _0809A118 @ =gUnk_0812388C ldrb r2, [r5, #0xb] lsls r0, r2, #1 adds r0, #1 lsls r0, r0, #1 adds r0, r0, r3 lsrs r1, r1, #0x18 ldrh r0, [r0] adds r1, r1, r0 lsls r2, r2, #2 adds r2, r2, r3 ldrh r2, [r2] adds r0, r5, #0 bl sub_0806F62C ldrh r1, [r7] ldrh r2, [r4] ldrh r3, [r6] adds r0, r5, #0 bl sub_0805EC9C adds r0, r5, #0 movs r1, #7 bl UpdateSprite b _0809A1B6 .align 2, 0 _0809A118: .4byte gUnk_0812388C _0809A11C: movs r0, #0 strb r0, [r5, #0xe] adds r0, r5, #0 movs r1, #8 bl UpdateSprite ldr r0, [r5, #0x50] adds r1, r5, #0 bl CopyPosition b _0809A1B6 _0809A132: ldr r0, [r5, #0x50] adds r0, #0x7c ldrb r0, [r0] movs r1, #0 strb r0, [r5, #0xb] movs r0, #4 strb r0, [r5, #0xe] strb r1, [r5, #0xf] ldr r3, _0809A1A0 @ =gRoomControls ldrh r0, [r5, #0x2e] ldrh r1, [r3, #6] subs r0, r0, r1 movs r1, #0xf8 lsls r1, r1, #1 adds r2, r1, #0 ands r0, r2 movs r1, #0x82 adds r1, r1, r5 mov ip, r1 strh r0, [r1] ldrh r1, [r5, #0x32] ldrh r0, [r3, #8] subs r1, r1, r0 ands r1, r2 adds r3, r5, #0 adds r3, #0x80 strh r1, [r3] adds r4, r5, #0 adds r4, #0x84 mov r0, ip ldrh r2, [r0] subs r2, #0x10 asrs r2, r2, #4 lsrs r1, r1, #4 lsls r0, r1, #5 subs r0, r0, r1 adds r2, r2, r0 str r2, [r4] mov r1, ip ldrh r0, [r1] ldrh r1, [r3] ldrb r3, [r5, #0xb] bl sub_0809A6F8 ldr r0, [r5, #0x50] adds r0, #0x7c ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0809A1A8 ldr r0, _0809A1A4 @ =0x000001A3 bl PlaySFX b _0809A1B6 .align 2, 0 _0809A1A0: .4byte gRoomControls _0809A1A4: .4byte 0x000001A3 _0809A1A8: movs r0, #0xe8 bl PlaySFX b _0809A1B6 _0809A1B0: movs r0, #0xf0 lsls r0, r0, #1 _0809A1B4: str r0, [r5, #0x78] _0809A1B6: pop {r4, r5, r6, r7, pc} thumb_func_start sub_0809A1B8 sub_0809A1B8: @ 0x0809A1B8 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} sub sp, #0x38 adds r7, r0, #0 bl sub_08004274 ldrb r0, [r7, #0xa] cmp r0, #9 bls _0809A1D2 b _0809A632 _0809A1D2: lsls r0, r0, #2 ldr r1, _0809A1DC @ =_0809A1E0 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0809A1DC: .4byte _0809A1E0 _0809A1E0: @ jump table .4byte _0809A208 @ case 0 .4byte _0809A25C @ case 1 .4byte _0809A33E @ case 2 .4byte _0809A378 @ case 3 .4byte _0809A394 @ case 4 .4byte _0809A3E0 @ case 5 .4byte _0809A378 @ case 6 .4byte _0809A46C @ case 7 .4byte _0809A47C @ case 8 .4byte _0809A616 @ case 9 _0809A208: adds r1, r7, #0 adds r1, #0x79 ldrb r0, [r1] cmp r0, #0 beq _0809A25C subs r0, #1 strb r0, [r1] ldrb r0, [r7, #0xf] subs r0, #1 strb r0, [r7, #0xf] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 adds r1, #0xb str r1, [sp, #0x20] cmp r0, #0xff bne _0809A254 movs r0, #5 strb r0, [r7, #0xf] ldrb r3, [r7, #0xb] adds r0, r7, #0 movs r1, #0x87 movs r2, #1 bl CreateObjectWithParent adds r1, r0, #0 str r1, [r7, #0x54] cmp r1, #0 beq _0809A24E ldr r0, [r7, #0x50] str r0, [r1, #0x50] ldr r0, [r7, #0x54] adds r0, #0x84 ldr r2, [sp, #0x20] ldr r1, [r2] str r1, [r0] _0809A24E: ldrb r0, [r7, #0xb] adds r0, #1 strb r0, [r7, #0xb] _0809A254: ldr r1, [sp, #0x20] ldr r0, [r1] ldr r0, [r0, #0xc] b _0809A474 _0809A25C: adds r4, r7, #0 adds r4, #0x84 ldr r1, [r4] ldrb r0, [r7, #0xe] lsls r0, r0, #2 adds r1, #0xc adds r1, r1, r0 ldr r2, [r1] ldr r0, [r2, #0x2c] ldr r1, [r7, #0x2c] subs r0, r0, r1 ldr r1, [r2, #0x30] ldr r2, [r7, #0x30] subs r1, r1, r2 bl sub_080045DA strb r0, [r7, #0x15] movs r2, #0x24 ldrsh r1, [r7, r2] ldrb r2, [r7, #0x15] adds r0, r7, #0 bl sub_0806F62C ldr r1, [r4] ldrb r0, [r7, #0xe] lsls r0, r0, #2 adds r1, #0xc adds r1, r1, r0 ldr r1, [r1] adds r0, r7, #0 movs r2, #2 movs r3, #2 bl sub_080041A0 cmp r0, #0 bne _0809A2A6 b _0809A632 _0809A2A6: ldrb r0, [r7, #0xa] cmp r0, #0 bne _0809A2CC ldr r1, [r4] ldrb r0, [r7, #0xe] lsls r0, r0, #2 adds r1, #0xc adds r1, r1, r0 ldr r3, [r1] ldrb r2, [r3, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #2 rsbs r0, r0, #0 ands r1, r0 subs r0, #2 ands r0, r2 orrs r0, r1 strb r0, [r3, #0x18] _0809A2CC: ldrb r1, [r7, #0xe] ldr r0, [r4] ldrb r0, [r0, #1] subs r0, #1 cmp r1, r0 bne _0809A338 movs r0, #2 strb r0, [r7, #0xc] movs r0, #0xf0 strb r0, [r7, #0xe] bl Random ldr r6, _0809A330 @ =gUnk_0812384C ldrb r2, [r7, #0xb] movs r3, #0xf movs r4, #0xf adds r1, r4, #0 ands r1, r2 lsls r1, r1, #2 adds r1, r1, r6 ands r0, r3 ldrb r1, [r1] adds r0, r0, r1 strb r0, [r7, #0x15] bl Random ldrb r1, [r7, #0xb] ands r4, r1 lsls r4, r4, #1 adds r4, #1 lsls r4, r4, #1 adds r4, r4, r6 ldr r2, _0809A334 @ =0x000001FF adds r1, r2, #0 ands r0, r1 ldrh r4, [r4] adds r0, r0, r4 strh r0, [r7, #0x24] ldrb r0, [r7, #0xa] cmp r0, #0 beq _0809A320 b _0809A632 _0809A320: ldr r1, [r7, #0x50] movs r0, #4 strb r0, [r1, #0xc] ldr r1, [r7, #0x50] movs r0, #0 strb r0, [r1, #0xd] b _0809A632 .align 2, 0 _0809A330: .4byte gUnk_0812384C _0809A334: .4byte 0x000001FF _0809A338: adds r0, r1, #1 strb r0, [r7, #0xe] b _0809A632 _0809A33E: ldr r1, [r7, #0x50] ldrb r0, [r1, #0xb] cmp r0, #3 bne _0809A38E adds r0, r1, #0 adds r0, #0x84 ldr r0, [r0] ldr r2, [r0, #8] ldr r0, [r2, #0x2c] ldr r1, [r7, #0x2c] subs r0, r0, r1 ldr r1, [r2, #0x30] ldr r2, [r7, #0x30] subs r1, r1, r2 bl sub_080045DA strb r0, [r7, #0x15] movs r1, #0xa0 lsls r1, r1, #2 ldrb r2, [r7, #0x15] adds r0, r7, #0 bl sub_0806F62C ldr r1, [r7, #0x50] adds r0, r7, #0 movs r2, #0x48 bl sub_0806FC80 b _0809A388 _0809A378: ldrb r2, [r7, #0x15] adds r0, r7, #0 movs r1, #0x80 bl sub_0806F62C adds r0, r7, #0 adds r0, #0x5a ldrb r0, [r0] _0809A388: cmp r0, #0 bne _0809A38E b _0809A632 _0809A38E: bl sub_0805E780 b _0809A632 _0809A394: ldr r3, [r7, #0x78] cmp r3, #0 bne _0809A3B4 ldr r0, _0809A3B0 @ =gUnk_02034350 movs r2, #0xc ldrsh r1, [r0, r2] movs r0, #0x80 lsls r0, r0, #1 cmp r1, r0 beq _0809A38E movs r0, #8 bl sub_0805308C b _0809A632 .align 2, 0 _0809A3B0: .4byte gUnk_02034350 _0809A3B4: ldr r2, [r7, #0x50] adds r0, r2, #0 adds r0, #0x45 ldrb r1, [r0] cmp r1, #0 bne _0809A3C8 movs r0, #1 strb r0, [r7, #0xd] str r1, [r7, #0x78] b _0809A632 _0809A3C8: ldrb r0, [r7, #0xd] cmp r0, #0 bne _0809A3D6 ldrb r0, [r2, #0xb] cmp r0, #0 beq _0809A3D6 b _0809A632 _0809A3D6: movs r0, #1 strb r0, [r7, #0xd] subs r0, r3, #1 str r0, [r7, #0x78] b _0809A632 _0809A3E0: ldr r0, [r7, #0x78] cmp r0, #0 bne _0809A432 adds r0, r7, #0 adds r0, #0x76 ldrh r2, [r0] movs r1, #0x80 lsls r1, r1, #1 adds r5, r0, #0 cmp r2, r1 bne _0809A40E ldr r0, [r7, #0x50] adds r0, #0x7c ldrb r1, [r0] movs r0, #1 ands r0, r1 adds r4, r7, #0 adds r4, #0x74 cmp r0, #0 beq _0809A420 bl sub_0805E780 b _0809A420 _0809A40E: adds r0, r2, #0 subs r0, #0x20 strh r0, [r5] adds r1, r7, #0 adds r1, #0x74 ldrh r0, [r1] subs r0, #0x20 strh r0, [r1] adds r4, r1, #0 _0809A420: ldrh r1, [r5] ldrh r2, [r4] adds r0, r7, #0 adds r0, #0x7a ldrh r3, [r0] adds r0, r7, #0 bl sub_0805EC9C b _0809A436 _0809A432: subs r0, #1 str r0, [r7, #0x78] _0809A436: ldr r0, [r7, #0x50] adds r1, r7, #0 bl CopyPosition ldr r4, _0809A468 @ =gUnk_0812388C ldrb r3, [r7, #0xb] lsls r0, r3, #1 adds r0, #1 lsls r0, r0, #1 adds r0, r0, r4 ldrh r1, [r0] ldr r0, [r7, #0x50] adds r0, #0x7b ldrb r2, [r0] rsbs r2, r2, #0 lsls r2, r2, #0x18 lsls r3, r3, #2 adds r3, r3, r4 lsrs r2, r2, #0x18 ldrh r3, [r3] adds r2, r2, r3 adds r0, r7, #0 bl sub_0806F62C b _0809A632 .align 2, 0 _0809A468: .4byte gUnk_0812388C _0809A46C: ldrb r0, [r7, #0xe] cmp r0, #0 bne _0809A38E ldr r0, [r7, #0x50] _0809A474: adds r1, r7, #0 bl CopyPosition b _0809A632 _0809A47C: ldrb r0, [r7, #0xe] subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff beq _0809A48C b _0809A632 _0809A48C: movs r0, #4 strb r0, [r7, #0xe] ldrb r0, [r7, #0xf] adds r0, #1 strb r0, [r7, #0xf] adds r0, r7, #0 adds r0, #0x84 str r0, [sp, #4] ldrb r1, [r7, #0xf] lsls r0, r1, #5 subs r0, r0, r1 ldr r2, [sp, #4] ldr r1, [r2] subs r1, r1, r0 mov sl, r1 mov r0, sl str r0, [sp] adds r1, r7, #0 adds r1, #0x82 str r1, [sp, #8] ldrh r0, [r1] adds r2, r7, #0 adds r2, #0x7e str r2, [sp, #0xc] strh r0, [r2] ldrh r0, [r1] subs r1, #8 str r1, [sp, #0x10] strh r0, [r1] movs r2, #0x80 adds r2, r2, r7 mov sb, r2 ldrb r0, [r7, #0xf] lsls r0, r0, #4 ldrh r1, [r2] subs r1, r1, r0 movs r0, #0x7c adds r0, r0, r7 mov r8, r0 strh r1, [r0] adds r4, r7, #0 adds r4, #0x78 strh r1, [r4] ldr r1, [sp, #0x10] ldrh r0, [r1] ldrh r1, [r4] ldrb r3, [r7, #0xb] mov r2, sl bl sub_0809A6F8 adds r5, r0, #0 ldrb r6, [r7, #0xf] ldr r2, [sp, #4] str r2, [sp, #0x20] ldr r0, [sp, #0x10] str r0, [sp, #0x28] ldr r1, [sp, #8] str r1, [sp, #0x1c] ldr r2, [sp, #0xc] str r2, [sp, #0x30] mov r0, sb str r0, [sp, #0x34] mov r1, r8 str r1, [sp, #0x2c] str r4, [sp, #0x24] cmp r6, #0 beq _0809A568 ldr r2, [sp, #0x28] str r2, [sp, #0x14] mov sb, r4 ldr r0, [sp, #0x30] mov r8, r0 adds r4, r1, #0 _0809A51E: ldr r1, [sp, #0x14] ldrh r0, [r1] subs r0, #0x10 strh r0, [r1] mov r2, sb ldrh r0, [r2] adds r0, #0x10 strh r0, [r2] ldr r0, [sp] adds r0, #0x1e str r0, [sp] ldrh r0, [r1] ldrh r1, [r2] ldrb r3, [r7, #0xb] ldr r2, [sp] bl sub_0809A6F8 adds r5, r5, r0 mov r1, r8 ldrh r0, [r1] adds r0, #0x10 strh r0, [r1] ldrh r0, [r4] adds r0, #0x10 strh r0, [r4] movs r2, #0x20 add sl, r2 ldrh r0, [r1] ldrh r1, [r4] ldrb r3, [r7, #0xb] mov r2, sl bl sub_0809A6F8 adds r5, r5, r0 subs r6, #1 cmp r6, #0 bne _0809A51E _0809A568: ldrb r1, [r7, #0xf] lsls r0, r1, #5 subs r0, r0, r1 ldr r2, [sp, #0x20] ldr r1, [r2] adds r1, r1, r0 mov sl, r1 mov r0, sl str r0, [sp] ldr r1, [sp, #0x1c] ldrh r0, [r1] ldr r2, [sp, #0x30] strh r0, [r2] ldrh r0, [r1] ldr r1, [sp, #0x28] strh r0, [r1] ldrb r0, [r7, #0xf] lsls r0, r0, #4 ldr r2, [sp, #0x34] ldrh r2, [r2] adds r0, r0, r2 ldr r1, [sp, #0x2c] strh r0, [r1] ldr r2, [sp, #0x24] strh r0, [r2] ldr r1, [sp, #0x28] ldrh r0, [r1] ldrh r1, [r2] ldrb r3, [r7, #0xb] mov r2, sl bl sub_0809A6F8 adds r5, r5, r0 ldrb r0, [r7, #0xf] subs r6, r0, #1 cmp r6, #0 beq _0809A610 ldr r2, [sp, #0x28] str r2, [sp, #0x18] ldr r0, [sp, #0x24] mov sb, r0 ldr r1, [sp, #0x30] mov r8, r1 ldr r4, [sp, #0x2c] _0809A5C0: ldr r2, [sp, #0x18] ldrh r0, [r2] subs r0, #0x10 strh r0, [r2] mov r1, sb ldrh r0, [r1] subs r0, #0x10 strh r0, [r1] ldr r2, [sp] subs r2, #0x20 str r2, [sp] ldr r1, [sp, #0x18] ldrh r0, [r1] mov r2, sb ldrh r1, [r2] ldrb r3, [r7, #0xb] ldr r2, [sp] bl sub_0809A6F8 adds r5, r5, r0 mov r1, r8 ldrh r0, [r1] adds r0, #0x10 strh r0, [r1] ldrh r0, [r4] subs r0, #0x10 strh r0, [r4] movs r2, #0x1e rsbs r2, r2, #0 add sl, r2 ldrh r0, [r1] ldrh r1, [r4] ldrb r3, [r7, #0xb] mov r2, sl bl sub_0809A6F8 adds r5, r5, r0 subs r6, #1 cmp r6, #0 bne _0809A5C0 _0809A610: cmp r5, #0 bne _0809A632 b _0809A38E _0809A616: bl sub_08078B48 ldr r0, [r7, #0x78] subs r0, #1 str r0, [r7, #0x78] movs r1, #1 rsbs r1, r1, #0 cmp r0, r1 bne _0809A632 ldr r1, _0809A640 @ =gRoomControls ldr r0, _0809A644 @ =gLinkEntity str r0, [r1, #0x30] bl sub_0805E780 _0809A632: add sp, #0x38 pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 _0809A640: .4byte gRoomControls _0809A644: .4byte gLinkEntity thumb_func_start sub_0809A648 sub_0809A648: @ 0x0809A648 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r7, r0, #0 bl sub_08004274 ldrb r0, [r7, #0xe] subs r0, #1 strb r0, [r7, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff beq _0809A6EC ldr r4, [r7, #0x50] adds r0, r4, #0 adds r0, #0x74 ldrh r1, [r0] movs r0, #0x80 lsls r0, r0, #9 bl __divsi3 movs r2, #0x24 ldrsh r1, [r7, r2] adds r5, r1, #0 muls r5, r0, r5 adds r4, #0x7b ldrb r1, [r4] ldrb r0, [r7, #0x15] subs r0, r0, r1 movs r1, #0x7b adds r1, r1, r7 mov r8, r1 strb r0, [r1] ldr r6, _0809A6E8 @ =gUnk_080C9160 ldrb r0, [r1] lsls r0, r0, #1 adds r0, r0, r6 movs r2, #0 ldrsh r0, [r0, r2] lsls r5, r5, #8 asrs r5, r5, #0x10 adds r1, r5, #0 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r4, #0x80 lsls r4, r4, #1 adds r1, r4, #0 bl sub_0806FA04 ldr r1, [r7, #0x50] lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r1, #0x2c] adds r1, r1, r0 str r1, [r7, #0x2c] mov r1, r8 ldrb r0, [r1] adds r0, #0x40 lsls r0, r0, #1 adds r0, r0, r6 movs r2, #0 ldrsh r0, [r0, r2] adds r1, r5, #0 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r4, #0 bl sub_0806FA04 ldr r1, [r7, #0x50] lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r1, #0x30] subs r1, r1, r0 str r1, [r7, #0x30] b _0809A6F0 .align 2, 0 _0809A6E8: .4byte gUnk_080C9160 _0809A6EC: bl sub_0805E780 _0809A6F0: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0809A6F8 sub_0809A6F8: @ 0x0809A6F8 push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r5, r1, #0 adds r6, r2, #0 adds r7, r3, #0 bl sub_0809A758 cmp r0, #0 beq _0809A754 ldr r0, _0809A738 @ =gUnk_081238A0 lsls r1, r6, #1 adds r1, r1, r0 ldrh r0, [r1] cmp r0, #0 beq _0809A750 movs r0, #1 ands r0, r7 cmp r0, #0 beq _0809A73C ldrh r0, [r1] lsrs r1, r4, #4 movs r3, #0x3f ands r1, r3 lsrs r2, r5, #4 ands r2, r3 lsls r2, r2, #6 orrs r1, r2 movs r2, #1 bl sub_0807B9B8 b _0809A750 .align 2, 0 _0809A738: .4byte gUnk_081238A0 _0809A73C: lsrs r0, r4, #4 movs r2, #0x3f ands r0, r2 lsrs r1, r5, #4 ands r1, r2 lsls r1, r1, #6 orrs r0, r1 movs r1, #1 bl sub_0807BA8C _0809A750: movs r0, #1 b _0809A756 _0809A754: movs r0, #0 _0809A756: pop {r4, r5, r6, r7, pc} thumb_func_start sub_0809A758 sub_0809A758: @ 0x0809A758 push {lr} adds r2, r0, #0 cmp r2, #0xf bls _0809A770 movs r0, #0xf8 lsls r0, r0, #1 cmp r2, r0 bhi _0809A770 cmp r1, #0xf0 bhi _0809A770 movs r0, #1 b _0809A772 _0809A770: movs r0, #0 _0809A772: pop {pc} thumb_func_start sub_0809A774 sub_0809A774: @ 0x0809A774 push {lr} ldr r2, _0809A788 @ =gUnk_08123C80 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809A788: .4byte gUnk_08123C80 thumb_func_start sub_0809A78C sub_0809A78C: @ 0x0809A78C push {r4, r5, lr} adds r4, r0, #0 movs r3, #0 movs r0, #1 strb r0, [r4, #0xc] movs r2, #0x80 strb r2, [r4, #0xe] strb r3, [r4, #0xf] ldrb r0, [r4, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x19] adds r5, r4, #0 adds r5, #0x80 strh r2, [r5] adds r0, r4, #0 adds r0, #0x78 strh r3, [r0] ldrh r0, [r4, #0x2e] subs r0, #4 strh r0, [r4, #0x2e] adds r1, r4, #0 adds r1, #0x63 movs r0, #0xfc strb r0, [r1] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] ldrb r0, [r4, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] ldrh r2, [r5] adds r0, r4, #0 adds r1, r2, #0 bl sub_0805EC9C adds r0, r4, #0 bl UpdateSpriteOrderAndFlip ldrb r1, [r4, #0xf] adds r0, r4, #0 bl LoadAnimation adds r0, r4, #0 bl sub_0809A958 pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0809A7F4 sub_0809A7F4: @ 0x0809A7F4 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 bl sub_0809AA00 ldrb r0, [r4, #0xe] adds r2, r0, #0 cmp r2, #0 beq _0809A810 subs r0, #1 strb r0, [r4, #0xe] b _0809A840 _0809A810: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0809A840 ldrb r0, [r4, #0xf] cmp r0, #3 bne _0809A838 movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x5a strb r0, [r4, #0xe] strb r2, [r4, #0xf] adds r0, r4, #0 movs r1, #2 bl LoadAnimation b _0809A840 _0809A838: ldrb r1, [r4, #0xf] adds r0, r4, #0 bl LoadAnimation _0809A840: pop {r4, pc} .align 2, 0 thumb_func_start sub_0809A844 sub_0809A844: @ 0x0809A844 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 bl sub_0809AA00 ldrb r0, [r4, #0xf] cmp r0, #1 bhi _0809A85C movs r1, #0 b _0809A870 _0809A85C: ldrb r0, [r4, #0xe] adds r2, r0, #0 cmp r2, #0 beq _0809A87C subs r0, #1 strb r0, [r4, #0xe] ldr r0, _0809A878 @ =gUnk_03004040 ldr r1, [r0] cmp r1, #0 bne _0809A8A0 _0809A870: movs r0, #1 strb r0, [r4, #0xc] strb r1, [r4, #0xe] b _0809A8A0 .align 2, 0 _0809A878: .4byte gUnk_03004040 _0809A87C: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0809A8A0 movs r0, #3 strb r0, [r4, #0xc] strb r2, [r4, #0xe] adds r0, r4, #0 movs r1, #3 bl LoadAnimation adds r0, r4, #0 movs r1, #0x78 bl sub_0805E4E0 _0809A8A0: pop {r4, pc} .align 2, 0 thumb_func_start sub_0809A8A4 sub_0809A8A4: @ 0x0809A8A4 push {r4, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0xe0 ands r0, r1 cmp r0, #0x40 beq _0809A8D4 cmp r0, #0x40 bgt _0809A8C0 cmp r0, #0x20 beq _0809A8E2 b _0809A8FC _0809A8C0: cmp r0, #0x80 bne _0809A8FC adds r0, r4, #0 adds r0, #0x59 ldrb r0, [r0] cmp r0, #0 bne _0809A902 bl sub_0805E780 b _0809A902 _0809A8D4: movs r0, #0xbf ands r0, r1 strb r0, [r2] adds r0, r4, #0 bl sub_0809A9D4 b _0809A902 _0809A8E2: ldrb r0, [r4, #0xe] adds r0, #1 strb r0, [r4, #0xe] ldrb r1, [r2] movs r0, #0xdf ands r0, r1 strb r0, [r2] movs r0, #0xff bl sub_08078A90 movs r0, #0x2a bl sub_0807CD04 _0809A8FC: adds r0, r4, #0 bl sub_080042B8 _0809A902: ldrb r0, [r4, #0xe] cmp r0, #0 beq _0809A92A adds r1, r4, #0 adds r1, #0x80 ldrh r0, [r1] adds r0, #8 strh r0, [r1] ldr r0, [r4, #0x2c] movs r2, #0x80 lsls r2, r2, #3 adds r0, r0, r2 str r0, [r4, #0x2c] ldrh r2, [r1] adds r0, r4, #0 adds r1, r2, #0 movs r3, #0 bl sub_0805EC9C b _0809A94E _0809A92A: ldr r1, [r4, #0x54] adds r0, r4, #0 movs r2, #0 bl sub_0809AA9C ldr r1, _0809A950 @ =gLinkEntity adds r0, r4, #0 movs r2, #1 bl sub_0809AA9C ldr r0, _0809A954 @ =gUnk_03004040 ldr r1, [r0] cmp r1, #0 beq _0809A94E adds r0, r4, #0 movs r2, #1 bl sub_0809AA9C _0809A94E: pop {r4, pc} .align 2, 0 _0809A950: .4byte gLinkEntity _0809A954: .4byte gUnk_03004040 thumb_func_start sub_0809A958 sub_0809A958: @ 0x0809A958 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} movs r1, #0x2e ldrsh r3, [r0, r1] ldr r2, _0809A9CC @ =gRoomControls ldrh r1, [r2, #6] subs r1, #4 subs r3, r3, r1 asrs r3, r3, #4 movs r4, #0x3f ands r3, r4 movs r5, #0x32 ldrsh r1, [r0, r5] ldrh r2, [r2, #8] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r4 lsls r1, r1, #6 orrs r3, r1 adds r0, #0x82 strh r3, [r0] ldrh r0, [r0] adds r5, r0, #0 subs r5, #0x82 ldr r6, _0809A9D0 @ =gUnk_08123C90 movs r0, #0 movs r1, #0x80 lsls r1, r1, #7 mov sb, r1 _0809A996: movs r4, #0 adds r0, #1 mov r8, r0 adds r7, r5, #0 adds r7, #0x40 _0809A9A0: ldrh r0, [r6] mov r1, sb ands r0, r1 cmp r0, #0 beq _0809A9B4 ldrh r0, [r6] adds r1, r5, r4 movs r2, #1 bl UpdateCollisionLayer _0809A9B4: adds r4, #1 adds r6, #2 cmp r4, #3 ble _0809A9A0 mov r0, r8 adds r5, r7, #0 cmp r0, #4 ble _0809A996 pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 _0809A9CC: .4byte gRoomControls _0809A9D0: .4byte gUnk_08123C90 thumb_func_start sub_0809A9D4 sub_0809A9D4: @ 0x0809A9D4 push {r4, r5, r6, r7, lr} adds r0, #0x82 ldrh r0, [r0] adds r5, r0, #0 subs r5, #0x82 movs r0, #0 _0809A9E0: movs r4, #0 adds r7, r0, #1 adds r6, r5, #0 adds r6, #0x40 _0809A9E8: adds r0, r5, r4 movs r1, #1 bl sub_0807BA8C adds r4, #1 cmp r4, #3 ble _0809A9E8 adds r0, r7, #0 adds r5, r6, #0 cmp r0, #4 ble _0809A9E0 pop {r4, r5, r6, r7, pc} thumb_func_start sub_0809AA00 sub_0809AA00: @ 0x0809AA00 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r5, r0, #0 movs r0, #0 strb r0, [r5, #0xf] ldr r1, [r5, #0x54] cmp r1, #0 bne _0809AA50 movs r0, #7 movs r1, #0x38 movs r2, #7 bl sub_0805EB00 adds r4, r0, #0 adds r7, r5, #0 adds r7, #0x78 cmp r4, #0 beq _0809AA5C movs r0, #0x80 lsls r0, r0, #4 mov r8, r0 ldr r0, _0809AA4C @ =0x0000FFFF adds r6, r0, #0 _0809AA30: ldrh r0, [r4, #0xa] ands r0, r6 cmp r0, r8 bne _0809AA3A str r4, [r5, #0x54] _0809AA3A: adds r0, r4, #0 movs r1, #7 bl sub_0805EB64 adds r4, r0, #0 cmp r4, #0 bne _0809AA30 b _0809AA5C .align 2, 0 _0809AA4C: .4byte 0x0000FFFF _0809AA50: adds r0, r5, #0 movs r2, #0 bl sub_0809AA9C adds r7, r5, #0 adds r7, #0x78 _0809AA5C: ldr r4, _0809AA94 @ =gLinkEntity adds r0, r5, #0 adds r1, r4, #0 movs r2, #0x20 movs r3, #0x22 bl sub_080041A0 strh r0, [r7] lsls r0, r0, #0x10 cmp r0, #0 beq _0809AA8E adds r0, r5, #0 adds r1, r4, #0 movs r2, #1 bl sub_0809AA9C ldr r0, _0809AA98 @ =gUnk_03004040 ldr r4, [r0] cmp r4, #0 beq _0809AA8E adds r0, r5, #0 adds r1, r4, #0 movs r2, #1 bl sub_0809AA9C _0809AA8E: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _0809AA94: .4byte gLinkEntity _0809AA98: .4byte gUnk_03004040 thumb_func_start sub_0809AA9C sub_0809AA9C: @ 0x0809AA9C push {r4, lr} adds r4, r0, #0 adds r3, r1, #0 adds r0, #0x5a ldrb r0, [r0] movs r1, #3 ands r1, r0 cmp r1, #1 beq _0809AAB2 cmp r1, #2 bne _0809AABC _0809AAB2: adds r0, r3, #0 adds r0, #0x63 strb r1, [r0] adds r2, r0, #0 b _0809AAC6 _0809AABC: adds r1, r3, #0 adds r1, #0x63 movs r0, #0 strb r0, [r1] adds r2, r1, #0 _0809AAC6: movs r0, #0x2e ldrsh r1, [r3, r0] ldr r0, _0809AAE8 @ =gRoomControls ldrh r0, [r0, #6] movs r3, #0xad lsls r3, r3, #1 adds r0, r0, r3 cmp r1, r0 bgt _0809AAE4 ldrb r0, [r4, #0xf] adds r0, #1 strb r0, [r4, #0xf] ldrb r0, [r2] adds r0, #1 strb r0, [r2] _0809AAE4: pop {r4, pc} .align 2, 0 _0809AAE8: .4byte gRoomControls thumb_func_start sub_0809AAEC sub_0809AAEC: @ 0x0809AAEC push {lr} ldr r2, _0809AB00 @ =gUnk_08123D28 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809AB00: .4byte gUnk_08123D28 thumb_func_start sub_0809AB04 sub_0809AB04: @ 0x0809AB04 push {r4, r5, lr} adds r5, r0, #0 movs r0, #0x31 bl sub_0807CBE4 cmp r0, #0 beq _0809AB22 adds r0, r5, #0 bl sub_0809AD68 adds r0, r5, #0 bl sub_0809AD8C bl sub_0805E780 _0809AB22: movs r0, #0x36 movs r1, #0 bl CreateEnemy adds r4, r0, #0 cmp r4, #0 beq _0809AB9C adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition str r4, [r5, #0x54] ldr r2, _0809AB68 @ =gUnk_030010A0 adds r0, r2, #0 adds r0, #0x38 ldrb r1, [r0] cmp r1, #0 beq _0809AB70 adds r0, #1 ldrb r0, [r0] cmp r0, #0 beq _0809AB52 bl sub_0805E780 _0809AB52: movs r0, #7 strb r0, [r5, #0xc] ldrb r1, [r5, #0x18] subs r0, #0xb ands r0, r1 strb r0, [r5, #0x18] ldr r0, _0809AB6C @ =gRoomControls str r5, [r0, #0x30] bl sub_080809D4 b _0809AB9C .align 2, 0 _0809AB68: .4byte gUnk_030010A0 _0809AB6C: .4byte gRoomControls _0809AB70: movs r0, #1 strb r0, [r5, #0xc] movs r0, #0x1e strb r0, [r5, #0xe] strb r1, [r5, #0x1e] adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] adds r1, r5, #0 adds r1, #0x63 movs r0, #0x20 strb r0, [r1] ldr r1, _0809ABA0 @ =gUnk_08012DD8 adds r0, r5, #0 bl sub_0807DAD0 adds r1, r5, #0 adds r1, #0x84 str r0, [r1] _0809AB9C: pop {r4, r5, pc} .align 2, 0 _0809ABA0: .4byte gUnk_08012DD8 thumb_func_start sub_0809ABA4 sub_0809ABA4: @ 0x0809ABA4 push {lr} movs r1, #0 bl sub_0807DDAC pop {pc} .align 2, 0 thumb_func_start sub_0809ABB0 sub_0809ABB0: @ 0x0809ABB0 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xe] subs r0, #1 strb r0, [r2, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809ABCE movs r0, #3 strb r0, [r2, #0xc] movs r0, #0x78 strb r0, [r2, #0xe] ldr r1, _0809ABD0 @ =gRoomControls ldr r0, [r2, #0x54] str r0, [r1, #0x30] _0809ABCE: pop {pc} .align 2, 0 _0809ABD0: .4byte gRoomControls thumb_func_start sub_0809ABD4 sub_0809ABD4: @ 0x0809ABD4 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809ABF2 movs r0, #4 strb r0, [r1, #0xc] movs r0, #0x5a strb r0, [r1, #0xe] ldr r1, [r1, #0x54] movs r0, #1 strb r0, [r1, #0xd] _0809ABF2: pop {pc} thumb_func_start sub_0809ABF4 sub_0809ABF4: @ 0x0809ABF4 push {lr} adds r2, r0, #0 ldr r0, [r2, #0x54] ldrb r0, [r0, #0xd] cmp r0, #2 bls _0809AC36 ldrb r0, [r2, #0xe] subs r0, #1 strb r0, [r2, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _0809AC36 movs r0, #5 strb r0, [r2, #0xc] movs r0, #8 strb r0, [r2, #0xe] strb r1, [r2, #0xf] ldrb r1, [r2, #0x19] subs r0, #0x15 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2, #0x19] ldr r1, _0809AC38 @ =gLCDControls adds r2, r1, #0 adds r2, #0x66 movs r0, #0xf4 lsls r0, r0, #4 strh r0, [r2] adds r1, #0x68 movs r0, #0x10 strh r0, [r1] _0809AC36: pop {pc} .align 2, 0 _0809AC38: .4byte gLCDControls thumb_func_start sub_0809AC3C sub_0809AC3C: @ 0x0809AC3C push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] movs r3, #0xff lsls r0, r0, #0x18 lsrs r5, r0, #0x18 cmp r5, #0 bne _0809AC9A movs r0, #8 strb r0, [r4, #0xe] ldrb r2, [r4, #0xf] adds r2, #1 strb r2, [r4, #0xf] adds r1, r2, #0 ands r1, r3 ldr r6, _0809AC9C @ =gLCDControls lsls r3, r1, #8 movs r0, #0x10 subs r0, r0, r1 movs r1, #0xff ands r0, r1 orrs r3, r0 adds r0, r6, #0 adds r0, #0x68 strh r3, [r0] lsls r2, r2, #0x18 lsrs r2, r2, #0x18 cmp r2, #0xf bls _0809AC9A ldrb r1, [r4, #0x19] movs r0, #0xd rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x19] adds r0, r6, #0 adds r0, #0x66 strh r5, [r0] movs r0, #6 strb r0, [r4, #0xc] movs r0, #0xf strb r0, [r4, #0xe] ldrb r1, [r4, #0x18] subs r0, #0x13 ands r0, r1 strb r0, [r4, #0x18] _0809AC9A: pop {r4, r5, r6, pc} .align 2, 0 _0809AC9C: .4byte gLCDControls thumb_func_start sub_0809ACA0 sub_0809ACA0: @ 0x0809ACA0 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xe] subs r0, #1 strb r0, [r2, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809ACC4 ldr r1, [r2, #0x54] movs r0, #6 strb r0, [r1, #0xd] ldr r0, _0809ACC8 @ =gUnk_030010A0 adds r0, #0x38 movs r1, #0xf1 strb r1, [r0] adds r0, r2, #0 bl sub_0805E7BC _0809ACC4: pop {pc} .align 2, 0 _0809ACC8: .4byte gUnk_030010A0 thumb_func_start sub_0809ACCC sub_0809ACCC: @ 0x0809ACCC push {lr} adds r2, r0, #0 ldr r0, [r2, #0x54] ldrb r0, [r0, #0xe] cmp r0, #1 bne _0809ACE4 movs r0, #0 movs r1, #8 strb r1, [r2, #0xc] strb r0, [r2, #0xd] movs r0, #0xb4 strb r0, [r2, #0xe] _0809ACE4: pop {pc} .align 2, 0 thumb_func_start sub_0809ACE8 sub_0809ACE8: @ 0x0809ACE8 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xd] cmp r0, #1 beq _0809AD1E cmp r0, #2 beq _0809AD3A ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809AD58 movs r0, #0x5a strb r0, [r4, #0xe] movs r0, #1 strb r0, [r4, #0xd] movs r0, #0x73 bl PlaySFX movs r0, #0x31 bl sub_0807CCC8 adds r0, r4, #0 bl sub_0809AD8C b _0809AD58 _0809AD1E: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809AD58 movs r0, #0x78 strb r0, [r4, #0xe] movs r0, #2 strb r0, [r4, #0xd] adds r0, r4, #0 bl sub_0809AD68 b _0809AD58 _0809AD3A: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809AD58 ldr r1, _0809AD5C @ =gRoomControls ldr r0, _0809AD60 @ =gLinkEntity str r0, [r1, #0x30] ldr r0, _0809AD64 @ =gLinkState adds r0, #0x8b movs r1, #1 strb r1, [r0] bl sub_0805E780 _0809AD58: pop {r4, pc} .align 2, 0 _0809AD5C: .4byte gRoomControls _0809AD60: .4byte gLinkEntity _0809AD64: .4byte gLinkState thumb_func_start sub_0809AD68 sub_0809AD68: @ 0x0809AD68 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] bl sub_0804B128 bl LoadRoomEntityList movs r0, #0x17 bl GetInventoryValue cmp r0, #0 beq _0809AD8A ldrb r0, [r4, #0xb] bl sub_0804B128 bl LoadRoomEntityList _0809AD8A: pop {r4, pc} thumb_func_start sub_0809AD8C sub_0809AD8C: @ 0x0809AD8C push {lr} movs r0, #0x4f movs r1, #0x22 movs r2, #0 bl CreateObject adds r2, r0, #0 cmp r2, #0 beq _0809ADAC ldr r0, _0809ADB0 @ =gRoomControls ldrh r1, [r0, #6] adds r1, #0xb8 strh r1, [r2, #0x2e] ldrh r0, [r0, #8] adds r0, #8 strh r0, [r2, #0x32] _0809ADAC: pop {pc} .align 2, 0 _0809ADB0: .4byte gRoomControls thumb_func_start sub_0809ADB4 sub_0809ADB4: @ 0x0809ADB4 push {lr} ldr r2, _0809ADC8 @ =gUnk_08123D4C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809ADC8: .4byte gUnk_08123D4C thumb_func_start sub_0809ADCC sub_0809ADCC: @ 0x0809ADCC push {r4, r5, r6, r7, lr} adds r4, r0, #0 movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _0809AE14 @ =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, #0x80 strh r1, [r5] adds r0, r4, #0 adds r0, #0x38 ldrb r7, [r0] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip ldrb r0, [r4, #0xa] cmp r0, #1 beq _0809AEBC cmp r0, #1 bgt _0809AE18 cmp r0, #0 beq _0809AE1E b _0809AF46 .align 2, 0 _0809AE14: .4byte gRoomControls _0809AE18: cmp r0, #2 beq _0809AF10 b _0809AF46 _0809AE1E: movs r0, #2 strb r0, [r4, #0xc] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] subs r0, #0xa ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] ldrh r5, [r5] subs r6, r5, #1 ldr r4, _0809AEB8 @ =0x00004022 adds r0, r4, #0 adds r1, r6, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r0, r4, #0 adds r1, r5, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r5, #1 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r5, #0 adds r1, #0x3f adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r5, #0 adds r1, #0x40 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r5, #0 adds r1, #0x41 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r4, #0x1b adds r1, r5, #0 subs r1, #0x41 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r5, #0 subs r1, #0x40 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer subs r4, #0x17 adds r1, r5, #0 subs r1, #0x3f adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r5, #0 subs r1, #0x81 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r5, #0 subs r1, #0x80 adds r0, r4, #0 b _0809AF04 .align 2, 0 _0809AEB8: .4byte 0x00004022 _0809AEBC: strb r0, [r4, #0xc] ldrh r6, [r5] ldr r4, _0809AEF4 @ =0x00004022 adds r0, r4, #0 adds r1, r6, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x40 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer ldr r0, _0809AEF8 @ =0x00004025 adds r1, r6, #0 adds r1, #0x41 adds r2, r7, #0 bl UpdateCollisionLayer movs r0, #0x4f bl sub_0807CBD0 cmp r0, #0 bne _0809AF00 ldr r0, _0809AEFC @ =0x0000402F b _0809AF02 .align 2, 0 _0809AEF4: .4byte 0x00004022 _0809AEF8: .4byte 0x00004025 _0809AEFC: .4byte 0x0000402F _0809AF00: ldr r0, _0809AF0C @ =0x0000402D _0809AF02: adds r1, r6, #1 _0809AF04: adds r2, r7, #0 bl UpdateCollisionLayer b _0809AF46 .align 2, 0 _0809AF0C: .4byte 0x0000402D _0809AF10: movs r0, #1 strb r0, [r4, #0xc] ldrh r5, [r5] adds r6, r5, #0 subs r6, #0x41 ldr r4, _0809AF48 @ =0x00004022 adds r0, r4, #0 adds r1, r6, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r5, #0 subs r1, #0x40 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer subs r1, r5, #1 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r0, r4, #0 adds r1, r5, #0 adds r2, r7, #0 bl UpdateCollisionLayer _0809AF46: pop {r4, r5, r6, r7, pc} .align 2, 0 _0809AF48: .4byte 0x00004022 thumb_func_start nullsub_535 nullsub_535: @ 0x0809AF4C bx lr .align 2, 0 thumb_func_start sub_0809AF50 sub_0809AF50: @ 0x0809AF50 push {lr} bl nullsub_2 pop {pc} thumb_func_start nullsub_2 nullsub_2: @ 0x0809AF58 bx lr .align 2, 0 thumb_func_start sub_0809AF5C sub_0809AF5C: @ 0x0809AF5C push {lr} ldr r2, _0809AF70 @ =gUnk_08123D58 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809AF70: .4byte gUnk_08123D58 thumb_func_start sub_0809AF74 sub_0809AF74: @ 0x0809AF74 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] strb r0, [r4, #0x1e] movs r0, #0x2e ldrsh r2, [r4, r0] ldr r1, _0809AFBC @ =gRoomControls ldrh r0, [r1, #6] subs r2, r2, r0 asrs r2, r2, #4 movs r3, #0x3f ands r2, r3 movs r5, #0x32 ldrsh r0, [r4, r5] ldrh r1, [r1, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r3 lsls r0, r0, #6 orrs r2, r0 adds r0, r4, #0 adds r0, #0x80 movs r6, #0 strh r2, [r0] ldrb r0, [r4, #0xa] cmp r0, #0 beq _0809AFC4 movs r1, #1 strb r1, [r4, #0xc] adds r0, r4, #0 adds r0, #0x84 ldrb r0, [r0] cmp r0, #0 bne _0809AFC0 strb r6, [r4, #0xd] b _0809B02C .align 2, 0 _0809AFBC: .4byte gRoomControls _0809AFC0: strb r1, [r4, #0xd] b _0809B02C _0809AFC4: movs r0, #3 strb r0, [r4, #0xc] movs r0, #4 strb r0, [r4, #0xd] adds r0, r4, #0 adds r0, #0x84 strb r6, [r0] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip movs r0, #0x8b movs r1, #1 movs r2, #0 bl CreateObject adds r5, r0, #0 cmp r5, #0 beq _0809B026 str r4, [r5, #0x50] str r5, [r4, #0x54] adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 bne _0809B010 movs r3, #0x80 lsls r3, r3, #0xd adds r0, r4, #0 adds r1, r5, #0 adds r2, r3, #0 bl PositionRelative adds r0, r5, #0 adds r0, #0x84 strb r6, [r0] b _0809B026 _0809B010: movs r3, #0x80 lsls r3, r3, #0xd adds r0, r4, #0 adds r1, r5, #0 movs r2, #0 bl PositionRelative adds r1, r5, #0 adds r1, #0x84 movs r0, #1 strb r0, [r1] _0809B026: adds r0, r4, #0 bl sub_0809B334 _0809B02C: adds r0, r4, #0 bl sub_0809B0B0 pop {r4, r5, r6, pc} thumb_func_start sub_0809B034 sub_0809B034: @ 0x0809B034 push {r4, lr} adds r4, r0, #0 adds r0, #0x82 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x38 ldrb r1, [r1] bl sub_080002B0 adds r0, r4, #0 bl sub_0809B234 pop {r4, pc} .align 2, 0 thumb_func_start sub_0809B050 sub_0809B050: @ 0x0809B050 push {r4, r5, lr} adds r4, r0, #0 bl sub_0806F69C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809B0A2 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _0809B0A4 @ =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, #0x80 strh r1, [r0] movs r0, #0 bl sub_08078A90 adds r0, r4, #0 bl sub_0809B0B0 movs r0, #0x86 lsls r0, r0, #1 bl sub_08004488 _0809B0A2: pop {r4, r5, pc} .align 2, 0 _0809B0A4: .4byte gRoomControls thumb_func_start sub_0809B0A8 sub_0809B0A8: @ 0x0809B0A8 push {lr} bl sub_0809B234 pop {pc} thumb_func_start sub_0809B0B0 sub_0809B0B0: @ 0x0809B0B0 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} mov r8, r0 adds r0, #0x80 ldrh r0, [r0] subs r6, r0, #1 mov r0, r8 adds r0, #0x38 ldrb r7, [r0] mov r1, r8 ldrb r0, [r1, #0xd] cmp r0, #4 bls _0809B0CE b _0809B228 _0809B0CE: lsls r0, r0, #2 ldr r1, _0809B0D8 @ =_0809B0DC adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0809B0D8: .4byte _0809B0DC _0809B0DC: @ jump table .4byte _0809B0F0 @ case 0 .4byte _0809B130 @ case 1 .4byte _0809B178 @ case 2 .4byte _0809B1C0 @ case 3 .4byte _0809B208 @ case 4 _0809B0F0: mov r1, r8 adds r1, #0x84 movs r0, #0 strb r0, [r1] adds r5, r6, #2 mov r0, r8 adds r0, #0x82 strh r5, [r0] ldr r0, _0809B128 @ =0x00004082 subs r1, r6, #1 adds r2, r7, #0 bl UpdateCollisionLayer ldr r4, _0809B12C @ =0x00004022 adds r0, r4, #0 adds r1, r6, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r6, #1 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r0, r4, #0 adds r1, r5, #0 b _0809B162 .align 2, 0 _0809B128: .4byte 0x00004082 _0809B12C: .4byte 0x00004022 _0809B130: mov r1, r8 adds r1, #0x84 movs r0, #1 strb r0, [r1] mov r0, r8 adds r0, #0x82 strh r6, [r0] ldr r0, _0809B16C @ =0x0000405F adds r1, r6, #0 adds r2, r7, #0 bl UpdateCollisionLayer ldr r4, _0809B170 @ =0x00004022 adds r1, r6, #1 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r6, #2 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer ldr r0, _0809B174 @ =0x00004082 adds r1, r6, #3 _0809B162: adds r2, r7, #0 bl UpdateCollisionLayer b _0809B228 .align 2, 0 _0809B16C: .4byte 0x0000405F _0809B170: .4byte 0x00004022 _0809B174: .4byte 0x00004082 _0809B178: mov r1, r8 adds r1, #0x84 movs r0, #1 strb r0, [r1] mov r0, r8 adds r0, #0x82 strh r6, [r0] ldr r0, _0809B1B4 @ =0x00004082 adds r1, r6, #3 adds r2, r7, #0 bl UpdateCollisionLayer ldr r0, _0809B1B8 @ =0x00004022 adds r1, r6, #2 adds r2, r7, #0 bl UpdateCollisionLayer ldr r0, _0809B1BC @ =0x0000405F adds r1, r6, #0 adds r2, r7, #0 bl UpdateCollisionLayer mov r1, r8 ldr r0, [r1, #0x50] adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 b _0809B228 .align 2, 0 _0809B1B4: .4byte 0x00004082 _0809B1B8: .4byte 0x00004022 _0809B1BC: .4byte 0x0000405F _0809B1C0: mov r1, r8 adds r1, #0x84 movs r0, #0 strb r0, [r1] adds r4, r6, #2 mov r0, r8 adds r0, #0x82 strh r4, [r0] ldr r0, _0809B1FC @ =0x00004082 subs r1, r6, #1 adds r2, r7, #0 bl UpdateCollisionLayer ldr r0, _0809B200 @ =0x00004022 adds r1, r6, #0 adds r2, r7, #0 bl UpdateCollisionLayer ldr r0, _0809B204 @ =0x0000405F adds r1, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer mov r1, r8 ldr r0, [r1, #0x50] adds r0, #0x86 ldrh r0, [r0] bl sub_0807CD48 b _0809B228 .align 2, 0 _0809B1FC: .4byte 0x00004082 _0809B200: .4byte 0x00004022 _0809B204: .4byte 0x0000405F _0809B208: ldr r4, _0809B230 @ =0x00004022 adds r0, r4, #0 adds r1, r6, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r6, #1 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer adds r1, r6, #2 adds r0, r4, #0 adds r2, r7, #0 bl UpdateCollisionLayer _0809B228: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _0809B230: .4byte 0x00004022 thumb_func_start sub_0809B234 sub_0809B234: @ 0x0809B234 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0 beq _0809B26A ldr r2, [r4, #0x50] ldrb r1, [r2, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 ldrb r3, [r4, #0x19] movs r0, #0x3f ands r0, r3 orrs r0, r1 strb r0, [r4, #0x19] adds r2, #0x29 ldrb r1, [r2] lsls r1, r1, #0x1d adds r3, r4, #0 adds r3, #0x29 lsrs r1, r1, #0x1d ldrb r2, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r3] b _0809B270 _0809B26A: adds r0, r4, #0 bl sub_0809B274 _0809B270: pop {r4, pc} .align 2, 0 thumb_func_start sub_0809B274 sub_0809B274: @ 0x0809B274 push {r4, r5, lr} adds r4, r0, #0 ldr r3, _0809B290 @ =gLinkEntity adds r2, r4, #0 adds r2, #0x84 ldrb r0, [r2] cmp r0, #1 beq _0809B2BA cmp r0, #1 bgt _0809B294 cmp r0, #0 beq _0809B29A b _0809B332 .align 2, 0 _0809B290: .4byte gLinkEntity _0809B294: cmp r0, #2 beq _0809B30C b _0809B332 _0809B29A: movs r1, #0x32 ldrsh r0, [r3, r1] adds r0, #0x14 movs r3, #0x32 ldrsh r1, [r4, r3] cmp r0, r1 bge _0809B332 movs r0, #1 strb r0, [r2] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] subs r0, #9 ands r0, r1 movs r1, #5 b _0809B306 _0809B2BA: movs r5, #0x2e ldrsh r0, [r3, r5] adds r0, #0x1c movs r5, #0x2e ldrsh r1, [r4, r5] cmp r0, r1 ble _0809B2E8 movs r0, #2 strb r0, [r2] ldr r0, _0809B2E4 @ =0x00004022 adds r1, r4, #0 adds r1, #0x80 ldrh r1, [r1] adds r1, #2 movs r2, #1 bl UpdateCollisionLayer ldr r0, [r4, #0x54] bl sub_0809B358 b _0809B332 .align 2, 0 _0809B2E4: .4byte 0x00004022 _0809B2E8: movs r1, #0x32 ldrsh r0, [r3, r1] adds r0, #0x10 movs r3, #0x32 ldrsh r1, [r4, r3] cmp r0, r1 ble _0809B332 movs r0, #0 strb r0, [r2] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] subs r0, #8 ands r0, r1 movs r1, #4 _0809B306: orrs r0, r1 strb r0, [r2] b _0809B332 _0809B30C: movs r5, #0x2e ldrsh r0, [r3, r5] adds r0, #0x20 movs r3, #0x2e ldrsh r1, [r4, r3] cmp r0, r1 bge _0809B332 movs r0, #1 strb r0, [r2] adds r0, r4, #0 adds r0, #0x80 ldrh r0, [r0] adds r0, #2 movs r1, #1 bl sub_0807BA8C ldr r0, [r4, #0x54] bl sub_0809B38C _0809B332: pop {r4, r5, pc} thumb_func_start sub_0809B334 sub_0809B334: @ 0x0809B334 push {r4, r5, lr} adds r0, #0x80 ldrh r0, [r0] adds r4, r0, #0 subs r4, #0x81 movs r5, #2 _0809B340: ldr r0, _0809B354 @ =0x00004026 adds r1, r4, #0 movs r2, #1 bl UpdateCollisionLayer subs r5, #1 adds r4, #1 cmp r5, #0 bge _0809B340 pop {r4, r5, pc} .align 2, 0 _0809B354: .4byte 0x00004026 thumb_func_start sub_0809B358 sub_0809B358: @ 0x0809B358 push {r4, r5, r6, lr} adds r1, r0, #0 adds r1, #0x84 ldrb r1, [r1] lsls r1, r1, #1 ldr r2, _0809B388 @ =gUnk_08123D68 adds r5, r1, r2 adds r0, #0x80 ldrh r0, [r0] adds r4, r0, #0 subs r4, #0x82 movs r6, #4 _0809B370: ldrh r0, [r5] adds r1, r4, #0 movs r2, #1 bl UpdateCollisionLayer subs r6, #1 adds r4, #1 adds r5, #4 cmp r6, #0 bge _0809B370 pop {r4, r5, r6, pc} .align 2, 0 _0809B388: .4byte gUnk_08123D68 thumb_func_start sub_0809B38C sub_0809B38C: @ 0x0809B38C push {r4, r5, lr} adds r0, #0x80 ldrh r0, [r0] adds r4, r0, #0 subs r4, #0x82 movs r5, #4 _0809B398: adds r0, r4, #0 movs r1, #1 bl sub_0807BA8C subs r5, #1 adds r4, #1 cmp r5, #0 bge _0809B398 pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0809B3AC sub_0809B3AC: @ 0x0809B3AC push {lr} ldr r2, _0809B3C0 @ =gUnk_08123D7C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809B3C0: .4byte gUnk_08123D7C thumb_func_start sub_0809B3C4 sub_0809B3C4: @ 0x0809B3C4 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] adds r0, #0x39 bl GetInventoryValue adds r5, r0, #0 ldrb r0, [r4, #0xb] cmp r0, #3 beq _0809B3E2 cmp r5, #0 beq _0809B3FE bl sub_0805E780 b _0809B3FE _0809B3E2: movs r0, #0x73 bl sub_0807CBD0 cmp r0, #0 beq _0809B3F0 bl sub_0805E780 _0809B3F0: cmp r5, #2 beq _0809B3FE ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] _0809B3FE: adds r1, r4, #0 adds r1, #0x63 movs r0, #3 strb r0, [r1] adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0809B424 ldrb r0, [r4, #0xb] cmp r0, #0 bne _0809B420 ldrh r0, [r4, #0x32] adds r0, #0x30 strh r0, [r4, #0x32] _0809B420: movs r0, #2 strb r0, [r4, #0xb] _0809B424: adds r0, r4, #0 bl UpdateSpriteOrderAndFlip ldrb r1, [r4, #0xa] adds r1, #0x39 adds r0, r4, #0 bl LoadAnimation ldrb r1, [r4, #0xb] cmp r1, #1 beq _0809B46C cmp r1, #1 bgt _0809B444 cmp r1, #0 beq _0809B44E b _0809B4A6 _0809B444: cmp r1, #2 beq _0809B488 cmp r1, #3 beq _0809B48E b _0809B4A6 _0809B44E: movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x16 strb r0, [r4, #0xe] movs r0, #2 strb r0, [r4, #0xf] adds r0, r4, #0 adds r0, #0x80 strb r1, [r0] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 b _0809B49E _0809B46C: movs r0, #3 strb r0, [r4, #0xc] ldr r0, _0809B484 @ =gRoomControls ldrh r0, [r0, #0xc] subs r0, #0x10 ldrh r1, [r4, #0x32] subs r1, r1, r0 ldrh r0, [r4, #0x36] subs r0, r0, r1 strh r0, [r4, #0x36] b _0809B4A6 .align 2, 0 _0809B484: .4byte gRoomControls _0809B488: movs r0, #4 strb r0, [r4, #0xc] b _0809B4A6 _0809B48E: movs r1, #0 movs r0, #5 strb r0, [r4, #0xc] strb r1, [r4, #0xd] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] subs r0, #0xd _0809B49E: ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] _0809B4A6: pop {r4, r5, pc} thumb_func_start sub_0809B4A8 sub_0809B4A8: @ 0x0809B4A8 push {r4, lr} adds r4, r0, #0 bl sub_0800445C adds r1, r4, #0 adds r1, #0x80 ldrb r0, [r1] cmp r0, #0 beq _0809B4C0 subs r0, #1 strb r0, [r1] b _0809B520 _0809B4C0: adds r0, r4, #0 bl sub_0809B688 cmp r0, #0 beq _0809B51C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r3, r0, #0x18 cmp r3, #0 bne _0809B520 movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xe] movs r0, #0x40 strh r0, [r4, #0x24] movs r0, #0x10 strb r0, [r4, #0x15] ldr r2, _0809B510 @ =gLinkState movs r0, #0x9e strb r0, [r2, #6] movs r0, #5 strb r0, [r2, #0xc] ldr r0, [r2, #0x30] movs r1, #1 orrs r0, r1 str r0, [r2, #0x30] ldr r1, _0809B514 @ =gLinkEntity strh r3, [r1, #0x2c] strh r3, [r1, #0x30] ldrb r0, [r1, #0x14] lsls r0, r0, #2 strb r0, [r1, #0x15] ldr r0, _0809B518 @ =0x0000010F bl sub_08004488 b _0809B520 .align 2, 0 _0809B510: .4byte gLinkState _0809B514: .4byte gLinkEntity _0809B518: .4byte 0x0000010F _0809B51C: movs r0, #0x16 strb r0, [r4, #0xe] _0809B520: pop {r4, pc} .align 2, 0 thumb_func_start sub_0809B524 sub_0809B524: @ 0x0809B524 push {lr} adds r2, r0, #0 ldrb r0, [r2, #0xe] subs r0, #1 strb r0, [r2, #0xe] movs r1, #0xff lsls r0, r0, #0x18 cmp r0, #0 bne _0809B564 ldrb r0, [r2, #0xf] subs r0, #1 strb r0, [r2, #0xf] ands r0, r1 cmp r0, #0 bne _0809B554 movs r0, #3 strb r0, [r2, #0xc] ldrh r0, [r2, #0x32] adds r0, #0x20 strh r0, [r2, #0x32] ldrh r0, [r2, #0x36] subs r0, #0x20 strh r0, [r2, #0x36] b _0809B564 _0809B554: movs r0, #1 strb r0, [r2, #0xc] movs r0, #0x16 strb r0, [r2, #0xe] adds r1, r2, #0 adds r1, #0x80 movs r0, #0x18 strb r0, [r1] _0809B564: adds r0, r2, #0 bl sub_0806F69C pop {pc} thumb_func_start sub_0809B56C sub_0809B56C: @ 0x0809B56C push {r4, lr} adds r4, r0, #0 movs r1, #0xa0 lsls r1, r1, #6 bl sub_080044EC cmp r0, #1 bne _0809B5B0 movs r2, #4 movs r0, #4 strb r0, [r4, #0xc] adds r3, r4, #0 adds r3, #0x29 ldrb r1, [r3] subs r0, #0xc ands r0, r1 orrs r0, r2 strb r0, [r3] adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 adds r0, r4, #0 movs r1, #2 movs r2, #0 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _0809B5B0 adds r0, r4, #0 bl sub_0806FAB0 _0809B5B0: pop {r4, pc} .align 2, 0 thumb_func_start sub_0809B5B4 sub_0809B5B4: @ 0x0809B5B4 push {r4, lr} adds r4, r0, #0 ldr r0, _0809B5CC @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _0809B5D0 adds r0, r4, #0 bl sub_0800445C b _0809B5EA .align 2, 0 _0809B5CC: .4byte gLinkState _0809B5D0: adds r0, r4, #0 bl sub_08017850 cmp r0, #0 beq _0809B5EA ldrb r0, [r4, #0xa] adds r0, #0x39 movs r1, #0 movs r2, #0 bl sub_080A7C00 bl sub_0805E780 _0809B5EA: pop {r4, pc} thumb_func_start sub_0809B5EC sub_0809B5EC: @ 0x0809B5EC push {r4, r5, lr} adds r4, r0, #0 ldrb r1, [r4, #0x18] lsls r0, r1, #0x1e lsrs r5, r0, #0x1e cmp r5, #1 bne _0809B646 ldrb r0, [r4, #0xd] cmp r0, #0 beq _0809B606 cmp r0, #1 beq _0809B630 b _0809B682 _0809B606: movs r0, #7 movs r1, #0x1a movs r2, #7 bl sub_0805EB00 adds r2, r0, #0 cmp r2, #0 beq _0809B682 movs r0, #0x2e ldrsh r1, [r2, r0] movs r3, #0x2e ldrsh r0, [r4, r3] cmp r1, r0 blt _0809B682 ldrb r0, [r2, #0x14] cmp r0, #4 bne _0809B682 str r2, [r4, #0x50] strb r5, [r4, #0xd] adds r0, r2, #0 b _0809B63E _0809B630: ldr r1, [r4, #0x50] cmp r1, #0 beq _0809B650 ldr r0, [r1, #4] cmp r0, #0 beq _0809B650 adds r0, r1, #0 _0809B63E: adds r1, r4, #0 bl sub_0809B6B0 b _0809B682 _0809B646: ldrb r0, [r4, #0xd] cmp r0, #0 beq _0809B656 cmp r0, #1 beq _0809B668 _0809B650: bl sub_0805E780 b _0809B682 _0809B656: ldrb r0, [r4, #0xa] adds r0, #0x39 bl GetInventoryValue cmp r0, #2 bne _0809B682 movs r0, #1 strb r0, [r4, #0xd] b _0809B682 _0809B668: ldr r0, _0809B684 @ =gTextBox ldrb r0, [r0] movs r2, #0x7f ands r2, r0 cmp r2, #0 bne _0809B682 movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] strb r2, [r4, #0xd] _0809B682: pop {r4, r5, pc} .align 2, 0 _0809B684: .4byte gTextBox thumb_func_start sub_0809B688 sub_0809B688: @ 0x0809B688 push {lr} ldr r1, _0809B6A8 @ =gLinkEntity movs r2, #6 movs r3, #0xc bl sub_080041A0 adds r1, r0, #0 cmp r1, #1 bne _0809B6A4 ldr r0, _0809B6AC @ =gLinkState ldrb r0, [r0, #0xd] cmp r0, #0x10 beq _0809B6A4 movs r1, #0 _0809B6A4: adds r0, r1, #0 pop {pc} .align 2, 0 _0809B6A8: .4byte gLinkEntity _0809B6AC: .4byte gLinkState thumb_func_start sub_0809B6B0 sub_0809B6B0: @ 0x0809B6B0 push {r4, lr} adds r4, r1, #0 ldr r2, _0809B6EC @ =gUnk_08123D94 ldrb r1, [r0, #0x14] lsrs r1, r1, #1 adds r1, r1, r2 movs r3, #0 ldrsb r3, [r1, r3] lsls r3, r3, #0x10 adds r1, r4, #0 movs r2, #0 bl PositionRelative ldrb r0, [r4, #0xa] lsls r0, r0, #2 rsbs r0, r0, #0 strh r0, [r4, #0x36] ldrb r0, [r4, #0xa] movs r1, #3 subs r1, r1, r0 adds r4, #0x29 movs r0, #7 ands r1, r0 ldrb r2, [r4] movs r0, #8 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4] pop {r4, pc} .align 2, 0 _0809B6EC: .4byte gUnk_08123D94 thumb_func_start sub_0809B6F0 sub_0809B6F0: @ 0x0809B6F0 push {lr} ldr r2, _0809B704 @ =gUnk_08123D98 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809B704: .4byte gUnk_08123D98 thumb_func_start sub_0809B708 sub_0809B708: @ 0x0809B708 push {r4, r5, r6, lr} adds r6, r0, #0 movs r2, #1 movs r0, #1 strb r0, [r6, #0xc] ldrb r1, [r6, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r6, #0x18] movs r0, #0x80 strh r0, [r6, #0x24] adds r0, r6, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CBE4 cmp r0, #0 beq _0809B73A adds r0, r6, #0 bl sub_0809B7DC bl sub_0805E780 b _0809B78A _0809B73A: ldr r0, _0809B794 @ =0x0000030B movs r2, #0x2e ldrsh r1, [r6, r2] ldr r5, _0809B798 @ =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 movs r2, #2 bl sub_0807B7D8 ldr r0, _0809B79C @ =0x00004061 movs r2, #0x2e ldrsh r1, [r6, r2] ldrh r2, [r5, #6] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r4 movs r3, #0x32 ldrsh r2, [r6, r3] ldrh r3, [r5, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 adds r2, r6, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer _0809B78A: adds r0, r6, #0 bl sub_0809B7A0 pop {r4, r5, r6, pc} .align 2, 0 _0809B794: .4byte 0x0000030B _0809B798: .4byte gRoomControls _0809B79C: .4byte 0x00004061 thumb_func_start sub_0809B7A0 sub_0809B7A0: @ 0x0809B7A0 push {r4, lr} adds r4, r0, #0 bl sub_0809B7C0 ldrb r0, [r4, #0xe] cmp r0, #0 beq _0809B7BC adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] bl sub_0807CCC8 bl sub_0805E780 _0809B7BC: pop {r4, pc} .align 2, 0 thumb_func_start sub_0809B7C0 sub_0809B7C0: @ 0x0809B7C0 push {r4, lr} adds r4, r0, #0 bl sub_080002A0 ldr r1, _0809B7D8 @ =0xFFFFBF9F adds r0, r0, r1 cmp r0, #1 bls _0809B7D6 adds r0, r4, #0 bl sub_0809B7DC _0809B7D6: pop {r4, pc} .align 2, 0 _0809B7D8: .4byte 0xFFFFBF9F thumb_func_start sub_0809B7DC sub_0809B7DC: @ 0x0809B7DC push {r4, r5, r6, lr} adds r6, r0, #0 movs r0, #0xc3 lsls r0, r0, #2 movs r2, #0x2e ldrsh r1, [r6, r2] ldr r5, _0809B838 @ =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 movs r2, #2 bl sub_0807B7D8 ldr r0, _0809B83C @ =0x00004062 movs r2, #0x2e ldrsh r1, [r6, r2] ldrh r2, [r5, #6] subs r1, r1, r2 asrs r1, r1, #4 ands r1, r4 movs r3, #0x32 ldrsh r2, [r6, r3] ldrh r3, [r5, #8] subs r2, r2, r3 asrs r2, r2, #4 ands r2, r4 lsls r2, r2, #6 orrs r1, r2 adds r2, r6, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer movs r0, #1 strb r0, [r6, #0xe] pop {r4, r5, r6, pc} .align 2, 0 _0809B838: .4byte gRoomControls _0809B83C: .4byte 0x00004062 thumb_func_start sub_0809B840 sub_0809B840: @ 0x0809B840 push {lr} ldr r2, _0809B854 @ =gUnk_08123DA0 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809B854: .4byte gUnk_08123DA0 thumb_func_start sub_0809B858 sub_0809B858: @ 0x0809B858 push {r4, r5, lr} adds r4, r0, #0 movs r1, #0x1e bl sub_0805E4E0 ldrb r3, [r4, #0xc] cmp r3, #1 beq _0809B8CC cmp r3, #1 bgt _0809B872 cmp r3, #0 beq _0809B878 b _0809B972 _0809B872: cmp r3, #2 beq _0809B948 b _0809B972 _0809B878: movs r1, #1 strb r1, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] strb r3, [r4, #0xf] ldr r0, _0809B8BC @ =gRoomControls str r4, [r0, #0x30] strb r1, [r0, #0xe] ldr r5, _0809B8C0 @ =gLinkEntity movs r0, #0x2e ldrsh r1, [r4, r0] movs r2, #0x2e ldrsh r0, [r5, r2] movs r2, #6 cmp r1, r0 ble _0809B89A movs r2, #2 _0809B89A: strb r2, [r5, #0x14] ldr r2, _0809B8C4 @ =gLCDControls ldrh r1, [r2] ldr r0, _0809B8C8 @ =0x0000BFFF ands r0, r1 movs r4, #0xa0 lsls r4, r4, #6 adds r1, r4, #0 orrs r0, r1 strh r0, [r2] adds r0, r2, #0 adds r0, #0x58 strh r3, [r0] adds r2, #0x5c movs r0, #0xa0 strh r0, [r2] b _0809B972 .align 2, 0 _0809B8BC: .4byte gRoomControls _0809B8C0: .4byte gLinkEntity _0809B8C4: .4byte gLCDControls _0809B8C8: .4byte 0x0000BFFF _0809B8CC: ldrb r0, [r4, #0xe] cmp r0, #0 beq _0809B8D8 subs r0, #1 strb r0, [r4, #0xe] b _0809B972 _0809B8D8: ldrb r0, [r4, #0xf] cmp r0, #0x1f bhi _0809B914 ldr r5, _0809B90C @ =gUnk_030010A0 ldr r0, [r5] movs r1, #0x1f ands r0, r1 cmp r0, #0 bne _0809B8F0 ldr r0, _0809B910 @ =0x00000133 bl PlaySFX _0809B8F0: ldr r0, [r5] movs r1, #3 ands r0, r1 cmp r0, #0 bne _0809B972 ldrb r1, [r4, #0xf] adds r1, #1 strb r1, [r4, #0xf] lsls r1, r1, #0x18 lsrs r1, r1, #0x18 adds r0, r4, #0 bl sub_0809B97C b _0809B972 .align 2, 0 _0809B90C: .4byte gUnk_030010A0 _0809B910: .4byte 0x00000133 _0809B914: movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] ldr r2, _0809B938 @ =gLCDControls ldrh r1, [r2] ldr r0, _0809B93C @ =0x0000DFFF ands r0, r1 strh r0, [r2] ldr r1, _0809B940 @ =gRoomControls ldr r0, _0809B944 @ =gLinkEntity str r0, [r1, #0x30] movs r0, #0x9a lsls r0, r0, #1 bl PlaySFX b _0809B972 .align 2, 0 _0809B938: .4byte gLCDControls _0809B93C: .4byte 0x0000DFFF _0809B940: .4byte gRoomControls _0809B944: .4byte gLinkEntity _0809B948: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809B972 ldr r2, _0809B974 @ =gLCDControls ldrh r1, [r2] movs r3, #0x90 lsls r3, r3, #7 adds r0, r3, #0 orrs r0, r1 strh r0, [r2] ldr r1, _0809B978 @ =gRoomControls movs r0, #4 strb r0, [r1, #0xe] ldr r1, [r4, #0x50] movs r0, #1 strb r0, [r1, #0xd] bl sub_0805E780 _0809B972: pop {r4, r5, pc} .align 2, 0 _0809B974: .4byte gLCDControls _0809B978: .4byte gRoomControls thumb_func_start sub_0809B97C sub_0809B97C: @ 0x0809B97C push {lr} movs r3, #0x2e ldrsh r2, [r0, r3] ldr r0, _0809B9B4 @ =gRoomControls movs r3, #0xa ldrsh r0, [r0, r3] subs r2, r2, r0 subs r0, r2, r1 adds r2, r2, r1 cmp r0, #0 bge _0809B994 movs r0, #0 _0809B994: cmp r0, #0xf0 ble _0809B99A movs r0, #0xf0 _0809B99A: cmp r2, #0 bge _0809B9A0 movs r2, #0 _0809B9A0: cmp r2, #0xf0 ble _0809B9A6 movs r2, #0xf0 _0809B9A6: ldr r1, _0809B9B8 @ =gLCDControls lsls r0, r0, #8 orrs r0, r2 adds r1, #0x58 strh r0, [r1] pop {pc} .align 2, 0 _0809B9B4: .4byte gRoomControls _0809B9B8: .4byte gLCDControls thumb_func_start sub_0809B9BC sub_0809B9BC: @ 0x0809B9BC push {r4, r5, lr} adds r4, r0, #0 movs r1, #0x1e bl sub_0805E4E0 ldrb r0, [r4, #0xc] cmp r0, #1 beq _0809BA34 cmp r0, #1 bgt _0809B9D6 cmp r0, #0 beq _0809B9DC b _0809BAC2 _0809B9D6: cmp r0, #2 beq _0809BA9C b _0809BAC2 _0809B9DC: movs r1, #1 strb r1, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] movs r0, #0x20 strb r0, [r4, #0xf] ldr r0, _0809BA24 @ =gRoomControls str r4, [r0, #0x30] strb r1, [r0, #0xe] ldr r3, _0809BA28 @ =gLinkEntity movs r0, #0x2e ldrsh r1, [r4, r0] movs r2, #0x2e ldrsh r0, [r3, r2] movs r2, #6 cmp r1, r0 ble _0809BA00 movs r2, #2 _0809BA00: strb r2, [r3, #0x14] ldr r2, _0809BA2C @ =gLCDControls ldrh r1, [r2] ldr r0, _0809BA30 @ =0x0000BFFF ands r0, r1 movs r3, #0x80 lsls r3, r3, #6 adds r1, r3, #0 orrs r0, r1 strh r0, [r2] adds r1, r2, #0 adds r1, #0x58 movs r0, #0xf0 strh r0, [r1] adds r2, #0x5c movs r0, #0xa0 strh r0, [r2] b _0809BAC2 .align 2, 0 _0809BA24: .4byte gRoomControls _0809BA28: .4byte gLinkEntity _0809BA2C: .4byte gLCDControls _0809BA30: .4byte 0x0000BFFF _0809BA34: ldrb r0, [r4, #0xe] cmp r0, #0 beq _0809BA40 subs r0, #1 strb r0, [r4, #0xe] b _0809BAC2 _0809BA40: ldrb r0, [r4, #0xf] cmp r0, #0 beq _0809BA7C ldr r5, _0809BA74 @ =gUnk_030010A0 ldr r0, [r5] movs r1, #0x1f ands r0, r1 cmp r0, #0 bne _0809BA58 ldr r0, _0809BA78 @ =0x00000133 bl PlaySFX _0809BA58: ldr r0, [r5] movs r1, #3 ands r0, r1 cmp r0, #0 bne _0809BAC2 ldrb r1, [r4, #0xf] subs r1, #1 strb r1, [r4, #0xf] lsls r1, r1, #0x18 lsrs r1, r1, #0x18 adds r0, r4, #0 bl sub_0809B97C b _0809BAC2 .align 2, 0 _0809BA74: .4byte gUnk_030010A0 _0809BA78: .4byte 0x00000133 _0809BA7C: movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] ldr r1, _0809BA94 @ =gRoomControls ldr r0, _0809BA98 @ =gLinkEntity str r0, [r1, #0x30] movs r0, #0x9a lsls r0, r0, #1 bl PlaySFX b _0809BAC2 .align 2, 0 _0809BA94: .4byte gRoomControls _0809BA98: .4byte gLinkEntity _0809BA9C: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809BAC2 ldr r1, _0809BAC4 @ =gRoomControls movs r0, #4 strb r0, [r1, #0xe] ldr r2, _0809BAC8 @ =gLCDControls ldrh r1, [r2] ldr r0, _0809BACC @ =0x0000D7FF ands r0, r1 strh r0, [r2] ldr r1, [r4, #0x50] movs r0, #1 strb r0, [r1, #0xd] bl sub_0805E780 _0809BAC2: pop {r4, r5, pc} .align 2, 0 _0809BAC4: .4byte gRoomControls _0809BAC8: .4byte gLCDControls _0809BACC: .4byte 0x0000D7FF thumb_func_start sub_0809BAD0 sub_0809BAD0: @ 0x0809BAD0 push {r4, r5, lr} adds r4, r0, #0 movs r1, #0xa bl sub_0805E4E0 ldrb r0, [r4, #0xc] cmp r0, #4 bls _0809BAE2 b _0809BC68 _0809BAE2: lsls r0, r0, #2 ldr r1, _0809BAEC @ =_0809BAF0 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0809BAEC: .4byte _0809BAF0 _0809BAF0: @ jump table .4byte _0809BB04 @ case 0 .4byte _0809BB4C @ case 1 .4byte _0809BBF8 @ case 2 .4byte _0809BC24 @ case 3 .4byte _0809BC48 @ case 4 _0809BB04: ldrb r0, [r4, #0xc] adds r0, #1 movs r1, #0 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] strb r1, [r4, #0xf] ldr r1, _0809BB40 @ =gRoomControls str r4, [r1, #0x30] movs r0, #1 strb r0, [r1, #0xe] ldr r3, _0809BB44 @ =gLinkEntity movs r0, #0x2e ldrsh r1, [r4, r0] movs r2, #0x2e ldrsh r0, [r3, r2] movs r2, #6 cmp r1, r0 ble _0809BB2C movs r2, #2 _0809BB2C: strb r2, [r3, #0x14] ldr r1, _0809BB48 @ =gLCDControls adds r2, r1, #0 adds r2, #0x58 movs r0, #0x60 strh r0, [r2] adds r1, #0x5c movs r0, #0xa0 strh r0, [r1] b _0809BC68 .align 2, 0 _0809BB40: .4byte gRoomControls _0809BB44: .4byte gLinkEntity _0809BB48: .4byte gLCDControls _0809BB4C: adds r0, r4, #0 bl sub_0809BE78 cmp r0, #0 bne _0809BB58 b _0809BC68 _0809BB58: ldrb r0, [r4, #0xe] cmp r0, #0 beq _0809BB88 subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 beq _0809BB6A b _0809BC68 _0809BB6A: ldr r2, _0809BB80 @ =gLCDControls ldrh r1, [r2] ldr r0, _0809BB84 @ =0x0000BFFF ands r0, r1 movs r3, #0xa0 lsls r3, r3, #6 adds r1, r3, #0 orrs r0, r1 strh r0, [r2] b _0809BC68 .align 2, 0 _0809BB80: .4byte gLCDControls _0809BB84: .4byte 0x0000BFFF _0809BB88: ldr r2, _0809BBB8 @ =gLCDControls adds r5, r2, #0 adds r5, #0x58 ldrh r0, [r5] cmp r0, #0xdf bhi _0809BBC4 ldr r4, _0809BBBC @ =gUnk_030010A0 ldr r0, [r4] movs r1, #0x1f ands r0, r1 cmp r0, #0 bne _0809BBA6 ldr r0, _0809BBC0 @ =0x00000133 bl PlaySFX _0809BBA6: ldr r0, [r4] movs r1, #1 ands r0, r1 cmp r0, #0 bne _0809BC68 ldrh r0, [r5] adds r0, #1 strh r0, [r5] b _0809BC68 .align 2, 0 _0809BBB8: .4byte gLCDControls _0809BBBC: .4byte gUnk_030010A0 _0809BBC0: .4byte 0x00000133 _0809BBC4: movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xe] ldrh r1, [r2] ldr r0, _0809BBF4 @ =0x0000DFFF ands r0, r1 movs r3, #0x90 lsls r3, r3, #7 adds r1, r3, #0 orrs r0, r1 strh r0, [r2] ldrh r0, [r4, #0x2e] adds r0, #0x68 strh r0, [r4, #0x2e] ldrh r0, [r4, #0x32] adds r0, #0x28 strh r0, [r4, #0x32] movs r0, #0x9a lsls r0, r0, #1 bl PlaySFX b _0809BC68 .align 2, 0 _0809BBF4: .4byte 0x0000DFFF _0809BBF8: adds r0, r4, #0 bl sub_0809BE78 cmp r0, #0 beq _0809BC68 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809BC68 movs r0, #0x78 strb r0, [r4, #0xe] movs r0, #3 strb r0, [r4, #0xc] movs r0, #0x35 bl sub_0807CCB4 movs r0, #0x72 bl PlaySFX b _0809BC68 _0809BC24: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809BC68 movs r0, #4 strb r0, [r4, #0xc] ldr r1, _0809BC40 @ =gRoomControls ldr r0, _0809BC44 @ =gLinkEntity str r0, [r1, #0x30] movs r0, #2 strb r0, [r1, #0xe] b _0809BC68 .align 2, 0 _0809BC40: .4byte gRoomControls _0809BC44: .4byte gLinkEntity _0809BC48: adds r0, r4, #0 bl sub_0809BE78 cmp r0, #0 beq _0809BC68 ldr r1, _0809BC6C @ =gRoomControls movs r0, #4 strb r0, [r1, #0xe] ldr r1, [r4, #0x50] movs r0, #1 strb r0, [r1, #0xd] movs r0, #0x64 bl sub_0807CD10 bl sub_0805E780 _0809BC68: pop {r4, r5, pc} .align 2, 0 _0809BC6C: .4byte gRoomControls thumb_func_start sub_0809BC70 sub_0809BC70: @ 0x0809BC70 push {r4, r5, r6, lr} adds r4, r0, #0 movs r1, #0x1e bl sub_0805E4E0 ldrb r5, [r4, #0xc] cmp r5, #1 beq _0809BCDC cmp r5, #1 bgt _0809BC8A cmp r5, #0 beq _0809BC92 b _0809BDAE _0809BC8A: cmp r5, #2 bne _0809BC90 b _0809BD98 _0809BC90: b _0809BDAE _0809BC92: movs r1, #1 strb r1, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] strb r5, [r4, #0xf] ldr r0, _0809BCCC @ =gRoomControls str r4, [r0, #0x30] strb r1, [r0, #0xe] ldr r3, _0809BCD0 @ =gLinkEntity movs r0, #0x2e ldrsh r1, [r4, r0] movs r2, #0x2e ldrsh r0, [r3, r2] movs r2, #6 cmp r1, r0 ble _0809BCB4 movs r2, #2 _0809BCB4: strb r2, [r3, #0x14] ldr r1, _0809BCD4 @ =gLCDControls adds r2, r1, #0 adds r2, #0x58 ldr r0, _0809BCD8 @ =0x000080F0 strh r0, [r2] adds r1, #0x5c movs r0, #0xa0 strh r0, [r1] movs r0, #0x80 strb r0, [r4, #0xd] b _0809BDAE .align 2, 0 _0809BCCC: .4byte gRoomControls _0809BCD0: .4byte gLinkEntity _0809BCD4: .4byte gLCDControls _0809BCD8: .4byte 0x000080F0 _0809BCDC: adds r0, r4, #0 bl sub_0809BE78 cmp r0, #0 beq _0809BDAE ldrb r0, [r4, #0xe] cmp r0, #0 beq _0809BD20 subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809BDAE movs r0, #6 movs r1, #8 bl DoFade movs r0, #3 bl sub_0805AAF0 ldr r2, _0809BD18 @ =gLCDControls ldrh r1, [r2] ldr r0, _0809BD1C @ =0x0000BFFF ands r0, r1 movs r3, #0xa0 lsls r3, r3, #6 adds r1, r3, #0 orrs r0, r1 strh r0, [r2] b _0809BDAE .align 2, 0 _0809BD18: .4byte gLCDControls _0809BD1C: .4byte 0x0000BFFF _0809BD20: ldrb r0, [r4, #0xd] cmp r0, #0 beq _0809BD64 ldr r6, _0809BD58 @ =gUnk_030010A0 ldr r0, [r6] movs r1, #0x1f ands r0, r1 cmp r0, #0 bne _0809BD38 ldr r0, _0809BD5C @ =0x00000133 bl PlaySFX _0809BD38: ldr r0, [r6] ands r0, r5 cmp r0, #0 bne _0809BDAE ldrb r0, [r4, #0xd] subs r0, #1 strb r0, [r4, #0xd] ldr r1, _0809BD60 @ =gLCDControls ldrb r0, [r4, #0xd] lsls r0, r0, #8 movs r2, #0xf0 adds r1, #0x58 orrs r0, r2 strh r0, [r1] b _0809BDAE .align 2, 0 _0809BD58: .4byte gUnk_030010A0 _0809BD5C: .4byte 0x00000133 _0809BD60: .4byte gLCDControls _0809BD64: movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x78 strb r0, [r4, #0xe] ldr r2, _0809BD90 @ =gLCDControls ldrh r1, [r2] ldr r0, _0809BD94 @ =0x0000DFFF ands r0, r1 movs r3, #0x90 lsls r3, r3, #7 adds r1, r3, #0 orrs r0, r1 strh r0, [r2] movs r0, #0x37 bl sub_0807CCB4 movs r0, #0x9a lsls r0, r0, #1 bl PlaySFX b _0809BDAE .align 2, 0 _0809BD90: .4byte gLCDControls _0809BD94: .4byte 0x0000DFFF _0809BD98: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809BDAE ldr r1, [r4, #0x50] movs r0, #1 strb r0, [r1, #0xd] bl sub_0805E780 _0809BDAE: pop {r4, r5, r6, pc} thumb_func_start sub_0809BDB0 sub_0809BDB0: @ 0x0809BDB0 push {r4, lr} adds r4, r0, #0 movs r1, #0x1e bl sub_0805E4E0 ldrb r0, [r4, #0xc] cmp r0, #1 beq _0809BE00 cmp r0, #1 bgt _0809BDCA cmp r0, #0 beq _0809BDD0 b _0809BE70 _0809BDCA: cmp r0, #2 beq _0809BE54 b _0809BE70 _0809BDD0: movs r1, #1 strb r1, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] movs r0, #0x80 strb r0, [r4, #0xf] ldr r0, _0809BDF8 @ =gRoomControls str r4, [r0, #0x30] strb r1, [r0, #0xe] ldr r3, _0809BDFC @ =gLinkEntity movs r0, #0x2e ldrsh r1, [r4, r0] movs r2, #0x2e ldrsh r0, [r3, r2] movs r2, #6 cmp r1, r0 ble _0809BDF4 movs r2, #2 _0809BDF4: strb r2, [r3, #0x14] b _0809BE70 .align 2, 0 _0809BDF8: .4byte gRoomControls _0809BDFC: .4byte gLinkEntity _0809BE00: ldrb r0, [r4, #0xe] cmp r0, #0 beq _0809BE0C subs r0, #1 strb r0, [r4, #0xe] b _0809BE70 _0809BE0C: ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 beq _0809BE34 ldr r0, _0809BE2C @ =gUnk_030010A0 ldr r0, [r0] movs r1, #0x1f ands r0, r1 cmp r0, #0 bne _0809BE70 ldr r0, _0809BE30 @ =0x00000133 bl PlaySFX b _0809BE70 .align 2, 0 _0809BE2C: .4byte gUnk_030010A0 _0809BE30: .4byte 0x00000133 _0809BE34: movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] ldr r1, _0809BE4C @ =gRoomControls ldr r0, _0809BE50 @ =gLinkEntity str r0, [r1, #0x30] movs r0, #0x9a lsls r0, r0, #1 bl PlaySFX b _0809BE70 .align 2, 0 _0809BE4C: .4byte gRoomControls _0809BE50: .4byte gLinkEntity _0809BE54: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0809BE70 ldr r1, _0809BE74 @ =gRoomControls movs r0, #4 strb r0, [r1, #0xe] ldr r1, [r4, #0x50] movs r0, #1 strb r0, [r1, #0xd] bl sub_0805E780 _0809BE70: pop {r4, pc} .align 2, 0 _0809BE74: .4byte gRoomControls thumb_func_start sub_0809BE78 sub_0809BE78: @ 0x0809BE78 push {r4, r5, lr} adds r3, r0, #0 movs r5, #0 adds r0, #0x68 ldrh r2, [r0] ldr r0, _0809BEB0 @ =gRoomControls movs r4, #0xa ldrsh r1, [r0, r4] adds r4, r0, #0 cmp r2, r1 bne _0809BE9E adds r0, r3, #0 adds r0, #0x6a ldrh r1, [r0] movs r2, #0xc ldrsh r0, [r4, r2] cmp r1, r0 bne _0809BE9E movs r5, #1 _0809BE9E: ldrh r1, [r4, #0xa] adds r0, r3, #0 adds r0, #0x68 strh r1, [r0] ldrh r1, [r4, #0xc] adds r0, #2 strh r1, [r0] adds r0, r5, #0 pop {r4, r5, pc} .align 2, 0 _0809BEB0: .4byte gRoomControls thumb_func_start sub_0809BEB4 sub_0809BEB4: @ 0x0809BEB4 push {lr} ldr r2, _0809BEC8 @ =gUnk_08123DB4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809BEC8: .4byte gUnk_08123DB4 thumb_func_start sub_0809BECC sub_0809BECC: @ 0x0809BECC push {r4, lr} adds r4, r0, #0 movs r0, #0x9b bl sub_0807CBE4 cmp r0, #0 beq _0809BEDE bl sub_0805E780 _0809BEDE: movs r0, #0x91 movs r1, #0 movs r2, #0 bl CreateObject str r0, [r4, #0x54] cmp r0, #0 beq _0809BF1A movs r2, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x11] subs r0, #0x11 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r4, #0x11] strb r2, [r4, #0x1e] ldrb r0, [r4, #0x19] orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 bl sub_0809C0A8 adds r0, r4, #0 movs r1, #0xcc movs r2, #0xcc movs r3, #0 bl sub_0805EC9C _0809BF1A: pop {r4, pc} thumb_func_start sub_0809BF1C sub_0809BF1C: @ 0x0809BF1C push {r4, lr} adds r4, r0, #0 movs r1, #0xcc movs r2, #0xcc movs r3, #0 bl sub_0805EC9C movs r0, #0x37 bl sub_0807CBE4 cmp r0, #0 beq _0809BF6C movs r0, #0x90 movs r1, #0 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _0809BF6C ldr r0, _0809BF70 @ =gRoomControls str r1, [r0, #0x30] ldr r0, [r4, #0x54] str r1, [r0, #0x54] movs r3, #0x80 lsls r3, r3, #0xb adds r0, r4, #0 movs r2, #0 bl PositionRelative movs r0, #2 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x74 movs r0, #0xa0 lsls r0, r0, #1 strh r0, [r1] adds r0, #0x73 bl sub_08004488 _0809BF6C: pop {r4, pc} .align 2, 0 _0809BF70: .4byte gRoomControls thumb_func_start sub_0809BF74 sub_0809BF74: @ 0x0809BF74 push {r4, r5, r6, r7, lr} adds r7, r0, #0 adds r5, r7, #0 adds r5, #0x74 ldrh r0, [r5] subs r1, r0, #1 strh r1, [r5] lsls r0, r1, #0x10 cmp r0, #0 bne _0809BFA0 ldr r1, [r7, #0x54] movs r0, #1 strb r0, [r1, #0xf] adds r0, r7, #0 bl sub_0809C23C movs r0, #0x9b bl sub_0807CBE4 bl sub_0805E780 b _0809C09A _0809BFA0: movs r0, #0x1f ands r1, r0 cmp r1, #0 bne _0809BFAE ldr r0, _0809C09C @ =0x000001B3 bl sub_08004488 _0809BFAE: ldrh r0, [r5] cmp r0, #0x77 bhi _0809BFE0 movs r1, #0x78 subs r1, r1, r0 lsls r4, r1, #5 adds r4, #0xcc lsls r1, r1, #4 adds r1, #0xcc adds r0, r7, #0 adds r2, r4, #0 movs r3, #0 bl sub_0805EC9C adds r0, r7, #0 adds r1, r4, #0 movs r2, #8 movs r3, #0 bl sub_0806FCF4 adds r1, r7, #0 adds r1, #0x63 ldrb r0, [r1] adds r0, #8 strb r0, [r1] _0809BFE0: ldr r1, _0809C0A0 @ =gUnk_08123DC0 ldrh r0, [r5] lsrs r0, r0, #5 adds r0, r0, r1 ldrb r6, [r0] movs r0, #0xf movs r1, #0x11 movs r2, #0x40 bl CreateObject adds r5, r0, #0 cmp r5, #0 beq _0809C044 bl Random adds r4, r0, #0 asrs r0, r4, #0x10 ands r0, r6 adds r2, r6, #1 lsrs r1, r2, #1 subs r0, r0, r1 mov ip, r0 lsrs r0, r6, #1 ands r0, r4 lsrs r2, r2, #2 subs r4, r0, r2 adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] adds r1, r7, #0 adds r1, #0x80 ldr r2, _0809C0A4 @ =gRoomControls ldrh r0, [r2, #6] ldrh r1, [r1] adds r0, r0, r1 add r0, ip strh r0, [r5, #0x2e] adds r1, r7, #0 adds r1, #0x82 ldrh r0, [r2, #8] ldrh r1, [r1] adds r0, r0, r1 adds r0, r0, r4 strh r0, [r5, #0x32] _0809C044: movs r0, #0xf movs r1, #2 movs r2, #0x40 bl CreateObject adds r5, r0, #0 cmp r5, #0 beq _0809C09A bl Random adds r4, r0, #0 asrs r1, r4, #0x10 ands r1, r6 adds r0, r6, #1 lsrs r0, r0, #1 subs r1, r1, r0 mov ip, r1 lsrs r3, r6, #1 ands r3, r4 adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] adds r1, r7, #0 adds r1, #0x80 ldr r2, _0809C0A4 @ =gRoomControls ldrh r0, [r2, #6] ldrh r1, [r1] adds r0, r0, r1 add r0, ip strh r0, [r5, #0x2e] adds r1, r7, #0 adds r1, #0x82 ldrh r0, [r2, #8] ldrh r1, [r1] adds r0, r0, r1 adds r0, r0, r3 strh r0, [r5, #0x32] _0809C09A: pop {r4, r5, r6, r7, pc} .align 2, 0 _0809C09C: .4byte 0x000001B3 _0809C0A0: .4byte gUnk_08123DC0 _0809C0A4: .4byte gRoomControls thumb_func_start sub_0809C0A8 sub_0809C0A8: @ 0x0809C0A8 push {r4, r5, r6, lr} adds r4, r0, #0 movs r1, #0x2e ldrsh r0, [r4, r1] ldr r3, _0809C214 @ =gRoomControls ldrh r1, [r3, #6] subs r0, r0, r1 asrs r6, r0, #4 movs r2, #0x3f ands r6, r2 movs r1, #0x32 ldrsh r0, [r4, r1] ldrh r1, [r3, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r6, r0 ldr r5, _0809C218 @ =0x00004022 adds r1, r6, #0 subs r1, #0x41 adds r4, #0x38 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 subs r1, #0x40 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 subs r1, #0x3f ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer subs r1, r6, #2 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer subs r1, r6, #1 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldrb r2, [r4] adds r0, r5, #0 adds r1, r6, #0 bl UpdateCollisionLayer adds r1, r6, #1 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #2 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x3e ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x3f ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x40 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x41 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x42 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x7f ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x80 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 adds r1, #0x81 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _0809C21C @ =0x0000013F adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer movs r0, #0xa0 lsls r0, r0, #1 adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _0809C220 @ =0x00000141 adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _0809C224 @ =0x0000017F adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _0809C228 @ =0x00000181 adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _0809C22C @ =0x000001BD adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer movs r0, #0xdf lsls r0, r0, #1 adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _0809C230 @ =0x000001BF adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _0809C234 @ =0x000001C1 adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer movs r0, #0xe1 lsls r0, r0, #1 adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _0809C238 @ =0x000001C3 adds r1, r6, r0 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer pop {r4, r5, r6, pc} .align 2, 0 _0809C214: .4byte gRoomControls _0809C218: .4byte 0x00004022 _0809C21C: .4byte 0x0000013F _0809C220: .4byte 0x00000141 _0809C224: .4byte 0x0000017F _0809C228: .4byte 0x00000181 _0809C22C: .4byte 0x000001BD _0809C230: .4byte 0x000001BF _0809C234: .4byte 0x000001C1 _0809C238: .4byte 0x000001C3 thumb_func_start sub_0809C23C sub_0809C23C: @ 0x0809C23C push {r4, r5, lr} adds r4, r0, #0 movs r1, #0x2e ldrsh r0, [r4, r1] ldr r3, _0809C370 @ =gRoomControls ldrh r1, [r3, #6] subs r0, r0, r1 asrs r5, r0, #4 movs r2, #0x3f ands r5, r2 movs r1, #0x32 ldrsh r0, [r4, r1] ldrh r1, [r3, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r5, r0 adds r0, r5, #0 subs r0, #0x41 adds r4, #0x38 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 subs r0, #0x40 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 subs r0, #0x3f ldrb r1, [r4] bl sub_0807BA8C subs r0, r5, #2 ldrb r1, [r4] bl sub_0807BA8C subs r0, r5, #1 ldrb r1, [r4] bl sub_0807BA8C ldrb r1, [r4] adds r0, r5, #0 bl sub_0807BA8C adds r0, r5, #1 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #2 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x3e ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x3f ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x40 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x41 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x42 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x7f ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x80 ldrb r1, [r4] bl sub_0807BA8C adds r0, r5, #0 adds r0, #0x81 ldrb r1, [r4] bl sub_0807BA8C ldr r1, _0809C374 @ =0x0000013F adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C movs r1, #0xa0 lsls r1, r1, #1 adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C ldr r1, _0809C378 @ =0x00000141 adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C ldr r1, _0809C37C @ =0x0000017F adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C ldr r1, _0809C380 @ =0x00000181 adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C ldr r1, _0809C384 @ =0x000001BD adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C movs r1, #0xdf lsls r1, r1, #1 adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C ldr r1, _0809C388 @ =0x000001BF adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C ldr r1, _0809C38C @ =0x000001C1 adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C movs r1, #0xe1 lsls r1, r1, #1 adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C ldr r1, _0809C390 @ =0x000001C3 adds r0, r5, r1 ldrb r1, [r4] bl sub_0807BA8C pop {r4, r5, pc} .align 2, 0 _0809C370: .4byte gRoomControls _0809C374: .4byte 0x0000013F _0809C378: .4byte 0x00000141 _0809C37C: .4byte 0x0000017F _0809C380: .4byte 0x00000181 _0809C384: .4byte 0x000001BD _0809C388: .4byte 0x000001BF _0809C38C: .4byte 0x000001C1 _0809C390: .4byte 0x000001C3 thumb_func_start sub_0809C394 sub_0809C394: @ 0x0809C394 push {lr} ldr r2, _0809C3A8 @ =gUnk_08123DCC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809C3A8: .4byte gUnk_08123DCC thumb_func_start sub_0809C3AC sub_0809C3AC: @ 0x0809C3AC movs r2, #0 movs r1, #1 strb r1, [r0, #0xc] strb r2, [r0, #0x1e] adds r0, #0x29 ldrb r2, [r0] subs r1, #9 ands r1, r2 movs r2, #5 orrs r1, r2 strb r1, [r0] bx lr thumb_func_start nullsub_536 nullsub_536: @ 0x0809C3C4 bx lr .align 2, 0 thumb_func_start sub_0809C3C8 sub_0809C3C8: @ 0x0809C3C8 push {r4, lr} adds r4, r0, #0 ldr r1, _0809C3E8 @ =gUnk_08123DD4 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 ldrb r0, [r4, #0x19] movs r1, #0xc0 orrs r0, r1 strb r0, [r4, #0x19] pop {r4, pc} .align 2, 0 _0809C3E8: .4byte gUnk_08123DD4 thumb_func_start sub_0809C3EC sub_0809C3EC: @ 0x0809C3EC push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4, #0xa] cmp r0, #7 bls _0809C400 b _0809C5A4 _0809C400: lsls r0, r0, #2 ldr r1, _0809C40C @ =_0809C410 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0809C40C: .4byte _0809C410 _0809C410: @ jump table .4byte _0809C430 @ case 0 .4byte _0809C53E @ case 1 .4byte _0809C53E @ case 2 .4byte _0809C53E @ case 3 .4byte _0809C53E @ case 4 .4byte _0809C586 @ case 5 .4byte _0809C440 @ case 6 .4byte _0809C5BA @ case 7 _0809C430: adds r0, r4, #0 movs r1, #6 bl sub_0805E3A0 adds r1, r4, #0 adds r1, #0x7e movs r0, #0 strh r0, [r1] _0809C440: movs r0, #1 strb r0, [r4, #0xe] movs r0, #0x10 strb r0, [r4, #0x15] adds r1, r4, #0 adds r1, #0x79 movs r0, #0xf0 strb r0, [r1] ldr r1, _0809C4B4 @ =gRoomControls movs r2, #0x84 lsls r2, r2, #1 adds r0, r2, #0 ldrh r2, [r1, #6] adds r0, r0, r2 strh r0, [r4, #0x2e] movs r2, #0xb4 lsls r2, r2, #1 adds r0, r2, #0 ldrh r1, [r1, #8] adds r0, r0, r1 strh r0, [r4, #0x32] ldrb r0, [r4, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 adds r0, #0x76 movs r1, #0xa0 strh r1, [r0] subs r0, #2 strh r1, [r0] adds r1, r4, #0 adds r1, #0x7b movs r0, #0x80 strb r0, [r1] ldrb r0, [r4, #0xa] cmp r0, #0 bne _0809C52E subs r1, #0x19 movs r0, #0x29 strb r0, [r1] adds r1, #1 movs r0, #0xe0 strb r0, [r1] movs r0, #0x30 bl sub_0801D8E0 adds r2, r0, #0 adds r0, r4, #0 adds r0, #0x84 str r2, [r0] mov r8, r0 cmp r2, #0 bne _0809C4B8 bl sub_0805E780 b _0809C5BA .align 2, 0 _0809C4B4: .4byte gRoomControls _0809C4B8: str r2, [r4, #0x64] mov r0, r8 ldr r1, [r0] movs r0, #5 strb r0, [r1, #1] movs r5, #0 mov r7, r8 _0809C4C6: adds r6, r5, #1 adds r0, r4, #0 movs r1, #0x91 adds r2, r6, #0 movs r3, #0 bl CreateObjectWithParent str r0, [r4, #0x54] cmp r0, #0 beq _0809C4EE adds r1, r0, #0 adds r1, #0x84 ldr r0, [r7] str r0, [r1] ldr r1, [r7] lsls r0, r5, #2 adds r1, #0x20 adds r1, r1, r0 ldr r0, [r4, #0x54] str r0, [r1] _0809C4EE: adds r5, r6, #0 cmp r5, #3 bls _0809C4C6 adds r0, r4, #0 movs r1, #0x91 movs r2, #5 movs r3, #0 bl CreateObjectWithParent str r0, [r4, #0x54] cmp r0, #0 beq _0809C510 adds r1, r0, #0 adds r1, #0x84 mov r2, r8 ldr r0, [r2] str r0, [r1] _0809C510: adds r0, r4, #0 movs r1, #0x91 movs r2, #6 movs r3, #0 bl CreateObjectWithParent str r0, [r4, #0x50] cmp r0, #0 beq _0809C5A4 adds r1, r0, #0 adds r1, #0x84 mov r2, r8 ldr r0, [r2] str r0, [r1] b _0809C5A4 _0809C52E: adds r1, r4, #0 adds r1, #0x62 movs r0, #0xd7 strb r0, [r1] adds r1, #1 movs r0, #0xe0 strb r0, [r1] b _0809C5A4 _0809C53E: movs r1, #0 movs r0, #0x10 strb r0, [r4, #0xe] adds r0, r4, #0 adds r0, #0x79 strb r1, [r0] ldrb r1, [r4, #0xa] movs r2, #2 adds r0, r2, #0 ands r0, r1 cmp r0, #0 bne _0809C55A strb r2, [r4, #0xf] b _0809C55E _0809C55A: movs r0, #0xfe strb r0, [r4, #0xf] _0809C55E: adds r0, r4, #0 adds r0, #0x74 movs r2, #0x80 lsls r2, r2, #1 strh r2, [r0] ldrb r1, [r4, #0xa] movs r0, #1 ands r0, r1 cmp r0, #0 bne _0809C57E adds r1, r4, #0 adds r1, #0x76 movs r0, #0xff lsls r0, r0, #8 strh r0, [r1] b _0809C5A4 _0809C57E: adds r0, r4, #0 adds r0, #0x76 strh r2, [r0] b _0809C5A4 _0809C586: adds r0, r4, #0 adds r0, #0x76 movs r1, #0x80 lsls r1, r1, #1 strh r1, [r0] subs r0, #2 strh r1, [r0] adds r1, r4, #0 adds r1, #0x79 movs r0, #0x1c strb r0, [r1] adds r0, r4, #0 adds r0, #0x84 ldr r0, [r0] str r4, [r0, #8] _0809C5A4: ldr r0, _0809C5C0 @ =gUnk_08123DDC ldrb r1, [r4, #0xa] lsls r1, r1, #2 adds r1, r1, r0 ldrb r1, [r1] adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 bl sub_0809C5C4 _0809C5BA: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _0809C5C0: .4byte gUnk_08123DDC thumb_func_start sub_0809C5C4 sub_0809C5C4: @ 0x0809C5C4 push {r4, r5, r6, r7, lr} adds r5, r0, #0 ldrb r0, [r5, #0xa] cmp r0, #7 bls _0809C5D0 b _0809C7DE _0809C5D0: lsls r0, r0, #2 ldr r1, _0809C5DC @ =_0809C5E0 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0809C5DC: .4byte _0809C5E0 _0809C5E0: @ jump table .4byte _0809C738 @ case 0 .4byte _0809C600 @ case 1 .4byte _0809C600 @ case 2 .4byte _0809C600 @ case 3 .4byte _0809C600 @ case 4 .4byte _0809C6B8 @ case 5 .4byte _0809C7B4 @ case 6 .4byte _0809C7D2 @ case 7 _0809C600: ldr r0, [r5, #0x50] adds r1, r5, #0 bl sub_0806FAD8 ldr r0, [r5, #0x50] ldrb r0, [r0, #0xd] adds r6, r5, #0 adds r6, #0x84 cmp r0, #6 bne _0809C630 movs r0, #0xf ldrsb r0, [r5, r0] cmp r0, #0 bge _0809C624 ldr r0, [r6] ldrb r0, [r0] rsbs r0, r0, #0 b _0809C628 _0809C624: ldr r0, [r6] ldrb r0, [r0] _0809C628: strb r0, [r5, #0xf] adds r0, r5, #0 bl sub_0809CBE4 _0809C630: ldr r4, [r5, #0x50] adds r0, r4, #0 adds r0, #0x76 ldrh r1, [r0] movs r0, #0x80 lsls r0, r0, #9 bl __divsi3 adds r3, r0, #0 lsls r0, r3, #0xd lsrs r3, r0, #8 ldr r0, _0809C660 @ =0xFFFFE000 adds r3, r3, r0 ldr r0, [r6] ldr r0, [r0, #8] adds r0, #0x45 ldrb r0, [r0] cmp r0, #1 bne _0809C664 movs r1, #0x88 lsls r1, r1, #6 adds r3, r3, r1 b _0809C66C .align 2, 0 _0809C660: .4byte 0xFFFFE000 _0809C664: lsrs r0, r3, #1 movs r1, #0x88 lsls r1, r1, #6 adds r3, r0, r1 _0809C66C: adds r2, r4, #0 adds r2, #0x7b ldr r1, _0809C6B0 @ =gUnk_08123E18 ldrb r0, [r5, #0xa] subs r0, #1 adds r0, r0, r1 ldrb r0, [r0] ldrb r2, [r2] adds r0, r0, r2 rsbs r0, r0, #0 lsls r0, r0, #0x18 lsrs r1, r0, #0x18 adds r0, r5, #0 adds r2, r3, #0 bl sub_0809CB70 ldr r2, [r5, #0x50] adds r2, #0x7b ldr r1, _0809C6B4 @ =gUnk_08123E1C ldrb r0, [r5, #0xa] subs r0, #1 adds r0, r0, r1 ldrb r1, [r0] ldrb r2, [r2] adds r1, r1, r2 adds r0, r5, #0 adds r0, #0x79 ldrb r0, [r0] adds r0, r0, r1 adds r1, r5, #0 adds r1, #0x7b strb r0, [r1] b _0809C7BC .align 2, 0 _0809C6B0: .4byte gUnk_08123E18 _0809C6B4: .4byte gUnk_08123E1C _0809C6B8: ldr r0, [r5, #0x50] adds r1, r5, #0 bl sub_0806FAD8 ldr r0, [r5, #0x50] ldrb r0, [r0, #0xd] adds r6, r5, #0 adds r6, #0x79 adds r7, r5, #0 adds r7, #0x76 cmp r0, #4 beq _0809C6F6 adds r0, r5, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #1 beq _0809C6F6 ldrb r0, [r6] cmp r0, #0x1c bls _0809C6E4 subs r0, #1 strb r0, [r6] _0809C6E4: ldrh r0, [r7] movs r1, #0x80 lsls r1, r1, #1 cmp r0, r1 bls _0809C6F4 subs r0, #1 strh r0, [r7] b _0809C6F6 _0809C6F4: strh r1, [r7] _0809C6F6: ldr r4, [r5, #0x50] adds r0, r4, #0 adds r0, #0x74 ldrh r1, [r0] movs r0, #0x80 lsls r0, r0, #9 bl __divsi3 adds r3, r0, #0 ldrb r0, [r6] lsls r0, r0, #8 muls r0, r3, r0 lsrs r3, r0, #8 adds r4, #0x7b ldrb r0, [r4] adds r0, #0x80 rsbs r0, r0, #0 lsls r0, r0, #0x18 lsrs r1, r0, #0x18 adds r0, r5, #0 adds r2, r3, #0 bl sub_0809CB70 ldr r0, [r5, #0x50] adds r0, #0x7b ldrb r0, [r0] adds r1, r5, #0 adds r1, #0x7b strb r0, [r1] ldrh r1, [r7] adds r0, r5, #0 adds r0, #0x74 b _0809C7C4 _0809C738: movs r0, #0x37 bl sub_0807CBE4 cmp r0, #0 beq _0809C74A adds r0, r5, #0 movs r1, #0x1e bl sub_0805E4E0 _0809C74A: ldr r1, _0809C7A8 @ =gUnk_08123DF8 ldrb r0, [r5, #0xd] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r5, #0 bl _call_via_r1 ldrb r0, [r5, #0xf] cmp r0, #0 beq _0809C7BC ldr r0, _0809C7AC @ =gUnk_030010A0 ldr r0, [r0] movs r1, #7 ands r0, r1 cmp r0, #0 bne _0809C772 ldr r0, [r5, #0x54] bl sub_080A2B80 _0809C772: adds r3, r5, #0 adds r3, #0x7e ldrh r0, [r3] cmp r0, #0 beq _0809C7BC ldr r2, [r5, #0x54] movs r1, #0 ldrsh r0, [r3, r1] ldr r1, [r2, #0x20] subs r1, r1, r0 str r1, [r2, #0x20] ldr r0, [r2, #0x34] adds r0, r0, r1 str r0, [r2, #0x34] ldr r0, [r5, #0x54] ldr r1, [r0, #0x20] movs r0, #0xc0 lsls r0, r0, #6 cmp r1, r0 beq _0809C7A0 ldr r0, _0809C7B0 @ =0xFFFFD000 cmp r1, r0 bne _0809C7BC _0809C7A0: ldrh r0, [r3] rsbs r0, r0, #0 strh r0, [r3] b _0809C7BC .align 2, 0 _0809C7A8: .4byte gUnk_08123DF8 _0809C7AC: .4byte gUnk_030010A0 _0809C7B0: .4byte 0xFFFFD000 _0809C7B4: ldr r0, [r5, #0x50] adds r1, r5, #0 bl CopyPosition _0809C7BC: adds r0, r5, #0 adds r0, #0x76 ldrh r1, [r0] subs r0, #2 _0809C7C4: ldrh r2, [r0] adds r0, #6 ldrh r3, [r0] adds r0, r5, #0 bl sub_0805EC9C b _0809C7DE _0809C7D2: ldr r0, _0809C7E0 @ =gRoomControls ldr r0, [r0, #0x30] cmp r0, r5 beq _0809C7DE bl sub_0805E780 _0809C7DE: pop {r4, r5, r6, r7, pc} .align 2, 0 _0809C7E0: .4byte gRoomControls thumb_func_start sub_0809C7E4 sub_0809C7E4: @ 0x0809C7E4 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xf] cmp r0, #0 beq _0809C84A adds r3, r5, #0 adds r3, #0x7e ldrh r0, [r3] cmp r0, #0 bne _0809C82A ldr r2, [r5, #0x54] movs r0, #0x36 ldrsh r1, [r2, r0] movs r0, #0x10 rsbs r0, r0, #0 cmp r1, r0 ble _0809C814 ldr r0, [r2, #0x34] ldr r1, _0809C810 @ =0xFFFFC000 adds r0, r0, r1 str r0, [r2, #0x34] b _0809C82A .align 2, 0 _0809C810: .4byte 0xFFFFC000 _0809C814: ldr r0, [r2, #0x34] ldr r1, _0809C84C @ =0xFFFFF000 adds r0, r0, r1 str r0, [r2, #0x34] ldr r1, [r5, #0x54] movs r0, #0xc0 lsls r0, r0, #6 str r0, [r1, #0x20] movs r0, #0x80 lsls r0, r0, #2 strh r0, [r3] _0809C82A: adds r4, r5, #0 adds r4, #0x79 ldrb r0, [r4] subs r0, #1 strb r0, [r4] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _0809C84A ldr r0, _0809C850 @ =0x00000B43 bl TextboxTryNoOverlap movs r0, #1 strb r0, [r5, #0xd] movs r0, #8 strb r0, [r4] _0809C84A: pop {r4, r5, pc} .align 2, 0 _0809C84C: .4byte 0xFFFFF000 _0809C850: .4byte 0x00000B43 thumb_func_start sub_0809C854 sub_0809C854: @ 0x0809C854 push {r4, r5, lr} adds r4, r0, #0 ldr r0, _0809C8A8 @ =gTextBox ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 bne _0809C8B8 adds r5, r4, #0 adds r5, #0x79 ldrb r0, [r5] subs r0, #1 strb r0, [r5] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _0809C8B8 adds r0, r4, #0 movs r1, #0x91 movs r2, #7 movs r3, #0 bl CreateObjectWithParent adds r1, r0, #0 cmp r1, #0 beq _0809C892 ldrh r0, [r1, #0x32] subs r0, #0x50 strh r0, [r1, #0x32] ldr r0, _0809C8AC @ =gRoomControls str r1, [r0, #0x30] _0809C892: ldrb r0, [r4, #0xf] cmp r0, #2 bhi _0809C8B0 movs r0, #2 strb r0, [r4, #0xd] movs r0, #0x1e strb r0, [r5] movs r0, #0xe6 bl PlaySFX b _0809C8B8 .align 2, 0 _0809C8A8: .4byte gTextBox _0809C8AC: .4byte gRoomControls _0809C8B0: movs r0, #3 strb r0, [r4, #0xd] movs r0, #0x78 strb r0, [r5] _0809C8B8: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0809C8BC sub_0809C8BC: @ 0x0809C8BC push {lr} adds r2, r0, #0 adds r3, r2, #0 adds r3, #0x79 ldrb r0, [r3] subs r1, r0, #1 strb r1, [r3] lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _0809C8E2 movs r0, #1 strb r0, [r2, #0xd] movs r0, #0x1e strb r0, [r3] ldrb r0, [r2, #0xf] adds r0, #1 strb r0, [r2, #0xf] b _0809C922 _0809C8E2: movs r0, #3 ands r0, r1 cmp r0, #1 beq _0809C90A cmp r0, #1 bgt _0809C8F4 cmp r0, #0 beq _0809C8FE b _0809C922 _0809C8F4: cmp r0, #2 beq _0809C8FE cmp r0, #3 beq _0809C916 b _0809C922 _0809C8FE: ldrh r1, [r2, #0x2e] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 adds r0, #8 b _0809C920 _0809C90A: ldrh r1, [r2, #0x2e] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 adds r0, #4 b _0809C920 _0809C916: ldrh r1, [r2, #0x2e] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 subs r0, #4 _0809C920: strh r0, [r2, #0x2e] _0809C922: pop {pc} thumb_func_start sub_0809C924 sub_0809C924: @ 0x0809C924 push {r4, r5, lr} adds r5, r0, #0 adds r1, r5, #0 adds r1, #0x79 ldrb r0, [r1] subs r0, #1 strb r0, [r1] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff beq _0809C948 adds r0, r5, #0 movs r1, #0x87 movs r2, #6 movs r3, #0 bl CreateObjectWithParent b _0809C980 _0809C948: movs r0, #4 strb r0, [r5, #0xd] movs r0, #0x3c strb r0, [r1] ldr r4, _0809C984 @ =0x00000115 adds r0, r5, #0 adds r1, r4, #0 bl sub_080ADF80 ldr r0, [r5, #0x50] adds r1, r4, #0 bl sub_080ADF80 adds r0, r5, #0 movs r1, #0xef bl sub_0801D2B4 ldr r0, [r5, #0x50] movs r1, #0xef bl sub_0801D2B4 adds r0, r5, #0 movs r1, #0xef bl sub_0809CC30 movs r0, #0xe8 bl PlaySFX _0809C980: pop {r4, r5, pc} .align 2, 0 _0809C984: .4byte 0x00000115 thumb_func_start sub_0809C988 sub_0809C988: @ 0x0809C988 push {lr} adds r2, r0, #0 adds r1, r2, #0 adds r1, #0x79 ldrb r0, [r1] subs r0, #1 strb r0, [r1] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0xff bne _0809C9AC movs r0, #5 strb r0, [r2, #0xd] movs r0, #0xb4 strb r0, [r1] movs r0, #3 strb r0, [r2, #0xb] b _0809C9DC _0809C9AC: ldr r0, _0809C9C8 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #8 ands r0, r1 cmp r0, #0 beq _0809C9CC adds r0, r2, #0 adds r0, #0x84 ldr r0, [r0] ldr r1, [r0, #8] adds r1, #0x76 ldrh r0, [r1] subs r0, #4 b _0809C9DA .align 2, 0 _0809C9C8: .4byte gUnk_030010A0 _0809C9CC: adds r0, r2, #0 adds r0, #0x84 ldr r0, [r0] ldr r1, [r0, #8] adds r1, #0x76 ldrh r0, [r1] adds r0, #4 _0809C9DA: strh r0, [r1] _0809C9DC: pop {pc} .align 2, 0 thumb_func_start sub_0809C9E0 sub_0809C9E0: @ 0x0809C9E0 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldr r0, _0809CA04 @ =gUnk_030010A0 ldr r1, [r0] movs r2, #2 ands r1, r2 adds r7, r0, #0 cmp r1, #0 beq _0809CA08 adds r2, r4, #0 adds r2, #0x84 ldr r0, [r2] ldr r1, [r0, #8] adds r1, #0x76 ldrh r0, [r1] subs r0, #8 b _0809CA16 .align 2, 0 _0809CA04: .4byte gUnk_030010A0 _0809CA08: adds r2, r4, #0 adds r2, #0x84 ldr r0, [r2] ldr r1, [r0, #8] adds r1, #0x76 ldrh r0, [r1] adds r0, #8 _0809CA16: strh r0, [r1] adds r5, r2, #0 ldr r0, [r7] movs r6, #3 ands r0, r6 cmp r0, #0 bne _0809CA30 adds r0, r4, #0 movs r1, #0x87 movs r2, #2 movs r3, #0 bl CreateObjectWithParent _0809CA30: adds r2, r4, #0 adds r2, #0x79 ldrb r0, [r2] adds r1, r0, #0 cmp r1, #0 bne _0809CA92 ldr r0, [r4, #0x54] adds r0, #0x62 strb r1, [r0] ldr r0, [r4, #0x54] movs r1, #0x80 lsls r1, r1, #2 adds r2, #2 ldrb r2, [r2] rsbs r2, r2, #0 bl sub_0806F62C ldr r1, [r4, #0x54] adds r0, r4, #0 movs r2, #0x48 bl sub_0806FC80 cmp r0, #0 beq _0809CAC4 movs r0, #6 strb r0, [r4, #0xd] movs r1, #0 movs r0, #0xc0 strh r0, [r4, #0x24] strb r1, [r4, #0xb] strb r1, [r4, #0xf] ldr r2, [r4, #0x54] ldrb r1, [r2, #0x18] subs r0, #0xc4 ands r0, r1 strb r0, [r2, #0x18] ldr r0, [r5] ldr r0, [r0, #8] adds r0, #0x76 movs r1, #0x80 lsls r1, r1, #1 strh r1, [r0] ldr r1, [r5] movs r0, #1 strb r0, [r1] movs r0, #0xed bl PlaySFX b _0809CAC4 _0809CA92: subs r0, #1 strb r0, [r2] ldr r0, [r7] ands r0, r6 cmp r0, #1 beq _0809CAB4 cmp r0, #1 blo _0809CAAC cmp r0, #2 beq _0809CAAC cmp r0, #3 beq _0809CABC b _0809CAC4 _0809CAAC: ldr r0, [r4, #0x54] adds r0, #0x62 movs r1, #0 b _0809CAC2 _0809CAB4: ldr r0, [r4, #0x54] adds r0, #0x62 movs r1, #0xfc b _0809CAC2 _0809CABC: ldr r0, [r4, #0x54] adds r0, #0x62 movs r1, #4 _0809CAC2: strb r1, [r0] _0809CAC4: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_0809CAC8 sub_0809CAC8: @ 0x0809CAC8 push {r4, r5, lr} adds r5, r0, #0 bl sub_0806F69C ldr r2, _0809CB3C @ =gRoomControls ldrh r0, [r2, #8] movs r1, #0xe4 lsls r1, r1, #1 adds r0, r0, r1 movs r3, #0x32 ldrsh r1, [r5, r3] cmp r0, r1 bge _0809CB26 movs r0, #4 strb r0, [r2, #0xe] ldr r0, _0809CB40 @ =gLinkEntity str r0, [r2, #0x30] movs r0, #0x9b bl sub_0807CCB4 ldr r0, [r5, #0x50] bl sub_0805E7BC adds r4, r5, #0 adds r4, #0x84 ldr r0, [r4] ldr r0, [r0, #8] bl sub_0805E7BC ldr r0, [r4] ldr r0, [r0, #0x20] bl sub_0805E7BC ldr r0, [r4] ldr r0, [r0, #0x24] bl sub_0805E7BC ldr r0, [r4] ldr r0, [r0, #0x28] bl sub_0805E7BC ldr r0, [r4] ldr r0, [r0, #0x2c] bl sub_0805E7BC movs r0, #7 strb r0, [r5, #0xd] _0809CB26: ldr r0, _0809CB44 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #0xf ands r0, r1 cmp r0, #0 bne _0809CB38 ldr r0, _0809CB48 @ =0x00000163 bl PlaySFX _0809CB38: pop {r4, r5, pc} .align 2, 0 _0809CB3C: .4byte gRoomControls _0809CB40: .4byte gLinkEntity _0809CB44: .4byte gUnk_030010A0 _0809CB48: .4byte 0x00000163 thumb_func_start sub_0809CB4C sub_0809CB4C: @ 0x0809CB4C push {lr} ldr r0, _0809CB68 @ =gRoomControls ldrb r1, [r0, #0xf] movs r0, #4 ands r0, r1 cmp r0, #0 bne _0809CB66 ldr r0, _0809CB6C @ =0x00000B44 movs r1, #0 bl sub_08078AA8 bl sub_0805E780 _0809CB66: pop {pc} .align 2, 0 _0809CB68: .4byte gRoomControls _0809CB6C: .4byte 0x00000B44 thumb_func_start sub_0809CB70 sub_0809CB70: @ 0x0809CB70 push {r4, r5, r6, lr} mov r6, sb mov r5, r8 push {r5, r6} adds r6, r0, #0 adds r4, r1, #0 adds r5, r2, #0 ldr r0, _0809CBE0 @ =gUnk_080C9160 mov sb, r0 lsls r0, r4, #1 add r0, sb movs r1, #0 ldrsh r0, [r0, r1] lsls r5, r5, #0x10 asrs r5, r5, #0x10 adds r1, r5, #0 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r1, #0x80 lsls r1, r1, #1 mov r8, r1 bl sub_0806FA04 ldr r1, [r6, #0x50] lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r1, #0x2c] adds r1, r1, r0 str r1, [r6, #0x2c] adds r4, #0x40 lsls r4, r4, #1 add r4, sb movs r1, #0 ldrsh r0, [r4, r1] adds r1, r5, #0 bl sub_0806F9EC lsls r0, r0, #0x10 asrs r0, r0, #0x10 mov r1, r8 bl sub_0806FA04 ldr r2, [r6, #0x50] lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r2, #0x30] subs r1, r1, r0 str r1, [r6, #0x30] ldr r0, [r2, #0x34] str r0, [r6, #0x34] pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, pc} .align 2, 0 _0809CBE0: .4byte gUnk_080C9160 thumb_func_start sub_0809CBE4 sub_0809CBE4: @ 0x0809CBE4 push {r4, lr} adds r2, r0, #0 adds r3, r2, #0 adds r3, #0x79 ldrb r0, [r2, #0xf] ldrb r4, [r3] adds r1, r0, r4 strb r1, [r3] ldrb r4, [r2, #0xf] movs r0, #0xf ldrsb r0, [r2, r0] cmp r0, #0 bge _0809CC16 ldrb r0, [r2, #0xe] lsls r1, r1, #0x18 lsls r0, r0, #0x18 cmn r1, r0 bge _0809CC2C rsbs r0, r4, #0 strb r0, [r2, #0xf] movs r0, #0xcf lsls r0, r0, #1 bl PlaySFX b _0809CC2C _0809CC16: movs r0, #0 ldrsb r0, [r3, r0] ldrb r1, [r2, #0xe] cmp r0, r1 ble _0809CC2C rsbs r0, r4, #0 strb r0, [r2, #0xf] movs r0, #0xcf lsls r0, r0, #1 bl PlaySFX _0809CC2C: pop {r4, pc} .align 2, 0 thumb_func_start sub_0809CC30 sub_0809CC30: @ 0x0809CC30 push {r4, r5, r6, lr} adds r4, r0, #0 adds r6, r1, #0 adds r4, #0x84 ldr r0, [r4] ldr r0, [r0, #8] bl sub_0801D2B4 movs r5, #0 _0809CC42: ldr r0, [r4] lsls r1, r5, #2 adds r0, #0x20 adds r0, r0, r1 ldr r0, [r0] adds r1, r6, #0 bl sub_0801D2B4 adds r5, #1 cmp r5, #3 bls _0809CC42 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_0809CC5C sub_0809CC5C: @ 0x0809CC5C push {lr} ldr r2, _0809CC70 @ =gUnk_08123E20 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809CC70: .4byte gUnk_08123E20 thumb_func_start sub_0809CC74 sub_0809CC74: @ 0x0809CC74 push {r4, r5, lr} adds r5, r0, #0 movs r4, #1 strb r4, [r5, #0xc] bl UpdateSpriteOrderAndFlip ldrb r0, [r5, #0xa] cmp r0, #0 bne _0809CCD4 adds r2, r5, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #8 rsbs r1, r1, #0 ands r1, r0 movs r0, #5 orrs r1, r0 strb r1, [r2] movs r4, #0 _0809CC9A: movs r0, #0x92 movs r1, #1 adds r2, r4, #0 bl CreateObject adds r1, r0, #0 adds r4, #1 cmp r1, #0 beq _0809CCBE str r5, [r1, #0x50] lsrs r2, r4, #1 lsls r2, r2, #0x14 ldr r0, _0809CCCC @ =0xFFF80000 adds r2, r2, r0 adds r0, r5, #0 ldr r3, _0809CCD0 @ =0xFFF20000 bl PositionRelative _0809CCBE: cmp r4, #2 bls _0809CC9A adds r0, r5, #0 bl sub_0809CDF0 b _0809CD0A .align 2, 0 _0809CCCC: .4byte 0xFFF80000 _0809CCD0: .4byte 0xFFF20000 _0809CCD4: ldrb r1, [r5, #0xb] adds r0, r4, #0 ands r0, r1 cmp r0, #0 beq _0809CCF2 ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] movs r0, #0x14 strb r0, [r5, #0xe] b _0809CD02 _0809CCF2: movs r0, #2 strb r0, [r5, #0xc] ands r0, r1 movs r1, #0x12 cmp r0, #0 beq _0809CD00 movs r1, #0x14 _0809CD00: strb r1, [r5, #0xe] _0809CD02: adds r0, r5, #0 movs r1, #0 bl UpdateSprite _0809CD0A: pop {r4, r5, pc} thumb_func_start sub_0809CD0C sub_0809CD0C: @ 0x0809CD0C push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0 beq _0809CDAC adds r0, r4, #0 bl sub_08004274 adds r1, r4, #0 adds r1, #0x5a ldrb r2, [r1] movs r0, #1 ands r0, r2 cmp r0, #0 beq _0809CD36 movs r0, #0xfe ands r0, r2 strb r0, [r1] ldrh r0, [r4, #0x32] adds r0, #1 strh r0, [r4, #0x32] _0809CD36: ldrb r1, [r1] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0809CD56 adds r0, r4, #0 adds r0, #0x59 ldrb r0, [r0] cmp r0, #1 bne _0809CD56 movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #6 ands r0, r1 strb r0, [r4, #0x18] _0809CD56: ldrb r0, [r4, #0xf] cmp r0, #0 bne _0809CDAC ldr r5, _0809CDB0 @ =gLinkEntity adds r6, r5, #0 adds r6, #0x3d movs r0, #0 ldrsb r0, [r6, r0] cmp r0, #0 bne _0809CDAC ldrb r0, [r4, #0x1e] cmp r0, #0 beq _0809CDAC adds r0, r4, #0 adds r1, r5, #0 movs r2, #4 bl sub_0806FC80 cmp r0, #0 beq _0809CDAC ldrb r0, [r4, #0xf] adds r0, #1 strb r0, [r4, #0xf] movs r0, #2 rsbs r0, r0, #0 bl ModHealth adds r0, r5, #0 movs r1, #0x7a bl sub_0800449C movs r1, #0x10 strb r1, [r6] adds r0, r5, #0 adds r0, #0x3e strb r1, [r0] adds r2, r5, #0 adds r2, #0x42 movs r0, #0xc strb r0, [r2] adds r0, r5, #0 adds r0, #0x46 strh r1, [r0] _0809CDAC: pop {r4, r5, r6, pc} .align 2, 0 _0809CDB0: .4byte gLinkEntity thumb_func_start sub_0809CDB4 sub_0809CDB4: @ 0x0809CDB4 push {lr} adds r3, r0, #0 ldrb r0, [r3, #0xe] subs r0, #1 strb r0, [r3, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _0809CDEC movs r2, #1 movs r0, #1 strb r0, [r3, #0xc] movs r0, #0x1e strb r0, [r3, #0xe] strb r1, [r3, #0xf] ldrb r1, [r3, #0x18] subs r0, #0x22 ands r0, r1 orrs r0, r2 strb r0, [r3, #0x18] ldr r0, [r3, #0x50] ldrh r0, [r0, #0x32] subs r0, #0xe strh r0, [r3, #0x32] adds r0, r3, #0 movs r1, #0 bl UpdateSprite _0809CDEC: pop {pc} .align 2, 0 thumb_func_start sub_0809CDF0 sub_0809CDF0: @ 0x0809CDF0 push {r4, r5, r6, lr} adds r4, r0, #0 movs r0, #0x2e ldrsh r1, [r4, r0] ldr r2, _0809CE80 @ =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, #0x80 strh r1, [r0] ldrh r6, [r0] ldr r0, _0809CE84 @ =0x0000402E subs r1, r6, #1 adds r4, #0x38 ldrb r2, [r4] bl UpdateCollisionLayer ldr r5, _0809CE88 @ =0x00004022 ldrb r2, [r4] adds r0, r5, #0 adds r1, r6, #0 bl UpdateCollisionLayer adds r1, r6, #1 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r5, #4 adds r1, r6, #0 subs r1, #0x41 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 subs r1, #0x40 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer ldr r0, _0809CE8C @ =0x00004024 adds r1, r6, #0 subs r1, #0x3f ldrb r2, [r4] bl UpdateCollisionLayer adds r1, r6, #0 subs r1, #0x81 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer adds r1, r6, #0 subs r1, #0x80 ldrb r2, [r4] adds r0, r5, #0 bl UpdateCollisionLayer pop {r4, r5, r6, pc} .align 2, 0 _0809CE80: .4byte gRoomControls _0809CE84: .4byte 0x0000402E _0809CE88: .4byte 0x00004022 _0809CE8C: .4byte 0x00004024 thumb_func_start sub_0809CE90 sub_0809CE90: @ 0x0809CE90 push {lr} ldr r2, _0809CEA4 @ =gUnk_08123E80 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809CEA4: .4byte gUnk_08123E80 thumb_func_start sub_0809CEA8 sub_0809CEA8: @ 0x0809CEA8 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r0, r4, #0 movs r1, #0 bl UpdateSprite pop {r4, pc} thumb_func_start sub_0809CEC0 sub_0809CEC0: @ 0x0809CEC0 push {lr} bl sub_08004274 pop {pc} thumb_func_start sub_0809CEC8 sub_0809CEC8: @ 0x0809CEC8 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0809CF06 adds r0, #1 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] ldrb r0, [r4, #0xa] cmp r0, #0 bne _0809CEEE ldrb r1, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r1 b _0809CEF4 _0809CEEE: ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 _0809CEF4: strb r0, [r4, #0x18] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r0, r4, #0 movs r1, #0 bl UpdateSprite b _0809CF0C _0809CF06: adds r0, r4, #0 bl sub_08004274 _0809CF0C: adds r4, #0x59 ldrb r0, [r4] cmp r0, #0xff bne _0809CF20 bl Random movs r1, #0xf ands r0, r1 adds r0, #0x10 strb r0, [r4] _0809CF20: pop {r4, pc} .align 2, 0 thumb_func_start sub_0809CF24 sub_0809CF24: @ 0x0809CF24 push {lr} ldr r2, _0809CF38 @ =gUnk_08123EC0 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809CF38: .4byte gUnk_08123EC0 thumb_func_start sub_0809CF3C sub_0809CF3C: @ 0x0809CF3C push {lr} ldr r2, _0809CF50 @ =gUnk_08123EEC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809CF50: .4byte gUnk_08123EEC thumb_func_start sub_0809CF54 sub_0809CF54: @ 0x0809CF54 push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #0x31 strb r0, [r4, #0xe] movs r0, #1 strb r0, [r4, #0xf] ldr r0, _0809CFDC @ =0xFFFE8000 str r0, [r4, #0x20] ldr r0, _0809CFE0 @ =0xFFC74000 str r0, [r4, #0x34] adds r1, r4, #0 adds r1, #0x68 movs r0, #0xf8 lsls r0, r0, #8 strh r0, [r1] movs r0, #0xa0 lsls r0, r0, #2 strh r0, [r4, #0x24] movs r0, #8 strb r0, [r4, #0x15] subs r1, #0x30 movs r0, #2 strb r0, [r1] ldr r0, _0809CFE4 @ =gRoomControls ldrh r0, [r0, #0xa] strh r0, [r4, #0x2e] ldr r0, _0809CFE8 @ =0x00000123 bl PlaySFX adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r0, r4, #0 movs r1, #0 bl LoadAnimation movs r0, #0x95 movs r1, #1 movs r2, #0 bl CreateObject adds r5, r0, #0 cmp r5, #0 beq _0809CFD8 str r4, [r5, #0x50] movs r3, #0x80 lsls r3, r3, #0xc adds r0, r4, #0 adds r1, r5, #0 movs r2, #0 bl PositionRelative adds r0, r4, #0 adds r1, r5, #0 bl sub_0806FAB0 _0809CFD8: pop {r4, r5, pc} .align 2, 0 _0809CFDC: .4byte 0xFFFE8000 _0809CFE0: .4byte 0xFFC74000 _0809CFE4: .4byte gRoomControls _0809CFE8: .4byte 0x00000123 thumb_func_start sub_0809CFEC sub_0809CFEC: @ 0x0809CFEC push {r4, lr} adds r4, r0, #0 bl sub_0806F69C adds r0, r4, #0 adds r0, #0x68 movs r2, #0 ldrsh r1, [r0, r2] adds r0, r4, #0 bl sub_08003FC4 ldrb r0, [r4, #0xe] cmp r0, #0 beq _0809D018 subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0 bne _0809D026 strb r0, [r4, #0xf] b _0809D026 _0809D018: adds r0, r4, #0 bl sub_080040A8 cmp r0, #0 bne _0809D026 bl sub_0805E780 _0809D026: adds r0, r4, #0 bl sub_080042B8 pop {r4, pc} .align 2, 0 thumb_func_start sub_0809D030 sub_0809D030: @ 0x0809D030 push {lr} ldr r2, _0809D044 @ =gUnk_08123EF4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809D044: .4byte gUnk_08123EF4 thumb_func_start sub_0809D048 sub_0809D048: @ 0x0809D048 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x38 movs r0, #1 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r0, r4, #0 movs r1, #0x17 bl LoadAnimation pop {r4, pc} .align 2, 0 thumb_func_start sub_0809D06C sub_0809D06C: @ 0x0809D06C push {lr} ldr r2, _0809D080 @ =gUnk_08123EFC ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809D080: .4byte gUnk_08123EFC thumb_func_start sub_0809D084 sub_0809D084: @ 0x0809D084 push {lr} adds r1, r0, #0 ldr r0, [r1, #0x50] cmp r0, #0 beq _0809D0A8 ldrb r2, [r0, #0xf] cmp r2, #0 beq _0809D0A0 movs r3, #0x80 lsls r3, r3, #0xc movs r2, #0 bl PositionRelative b _0809D0A8 _0809D0A0: ldrb r0, [r1, #0xd] adds r0, #1 strb r0, [r1, #0xd] str r2, [r1, #0x20] _0809D0A8: pop {pc} .align 2, 0 thumb_func_start sub_0809D0AC sub_0809D0AC: @ 0x0809D0AC push {r4, lr} adds r4, r0, #0 movs r1, #0xc0 lsls r1, r1, #5 bl sub_080044EC cmp r0, #1 bhi _0809D0F0 movs r2, #0 movs r0, #2 strb r0, [r4, #0xa] movs r1, #1 strb r1, [r4, #0xc] str r2, [r4, #0x34] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] movs r0, #0x45 bl sub_0807CCB4 movs r0, #0x72 bl PlaySFX adds r0, r4, #0 movs r1, #0x11 movs r2, #0 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _0809D0F0 adds r0, r4, #0 bl sub_0806FAD8 _0809D0F0: pop {r4, pc} .align 2, 0 thumb_func_start sub_0809D0F4 sub_0809D0F4: @ 0x0809D0F4 push {lr} ldr r2, _0809D108 @ =gUnk_08123F04 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0809D108: .4byte gUnk_08123F04 thumb_func_start sub_0809D10C sub_0809D10C: @ 0x0809D10C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] adds r0, #1 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x38 movs r0, #1 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r0, r4, #0 movs r1, #0x17 bl LoadAnimation pop {r4, pc} .align 2, 0 thumb_func_start sub_0809D130 sub_0809D130: @ 0x0809D130 push {lr} adds r2, r0, #0 ldr r0, _0809D148 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _0809D14C adds r0, r2, #0 bl sub_0800445C b _0809D170 .align 2, 0 _0809D148: .4byte gLinkState _0809D14C: adds r0, r2, #0 bl sub_08017850 cmp r0, #0 beq _0809D170 movs r0, #0x17 movs r1, #0 movs r2, #0 bl sub_080A7C00 ldr r0, _0809D174 @ =gUnk_02002A40 ldr r1, [r0, #0x40] movs r2, #0x80 lsls r2, r2, #0x15 orrs r1, r2 str r1, [r0, #0x40] bl sub_0805E780 _0809D170: pop {pc} .align 2, 0 _0809D174: .4byte gUnk_02002A40 thumb_func_start sub_0809D178 sub_0809D178: @ 0x0809D178 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0 bne _0809D19C adds r0, #1 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x38 movs r0, #2 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r1, r4, #0 adds r1, #0x5a movs r0, #0x80 strb r0, [r1] _0809D19C: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0809D1E8 bl Random movs r1, #3 ands r1, r0 adds r0, r4, #0 bl UpdateSprite bl Random movs r1, #0xf ands r0, r1 adds r0, #0x10 adds r1, r4, #0 adds r1, #0x59 strb r0, [r1] ldrb r1, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] bl Random movs r1, #1 ands r1, r0 cmp r1, #0 beq _0809D1EE ldrb r0, [r4, #0x18] movs r1, #0x40 orrs r0, r1 strb r0, [r4, #0x18] b _0809D1EE _0809D1E8: adds r0, r4, #0 bl sub_08004274 _0809D1EE: pop {r4, pc}