.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_08077698 sub_08077698: @ 0x08077698 push {r4, r5, lr} adds r4, r0, #0 ldr r2, _0807771C @ =gPlayerState ldrb r1, [r2, #3] movs r0, #0xfe ands r0, r1 strb r0, [r2, #3] ldrb r1, [r2, #4] movs r0, #0xf ands r0, r1 strb r0, [r2, #4] ldrb r0, [r2, #7] ldrb r3, [r2, #2] orrs r0, r3 movs r1, #0x80 ands r0, r1 cmp r0, #0 bne _08077700 movs r0, #0x40 ands r0, r3 cmp r0, #0 bne _08077700 adds r0, r2, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 bne _08077700 adds r0, r4, #0 bl sub_08077758 cmp r0, #0 beq _08077700 bl sub_080777A0 cmp r0, #0 bne _08077700 ldr r4, _08077720 @ =gSave adds r0, r4, #0 adds r0, #0xb4 ldrb r0, [r0] movs r1, #1 movs r2, #0 bl sub_08077880 adds r4, #0xb5 ldrb r0, [r4] movs r1, #2 movs r2, #0 bl sub_08077880 bl sub_080778CC _08077700: movs r5, #0 ldr r4, _08077724 @ =gUnk_03000B80 _08077704: ldrb r0, [r4, #9] cmp r0, #0 beq _08077712 adds r0, r4, #0 adds r1, r5, #0 bl sub_080752E8 _08077712: adds r4, #0x1c adds r5, #1 cmp r5, #3 bls _08077704 pop {r4, r5, pc} .align 2, 0 _0807771C: .4byte gPlayerState _08077720: .4byte gSave _08077724: .4byte gUnk_03000B80 thumb_func_start sub_08077728 sub_08077728: @ 0x08077728 push {lr} cmp r0, #0 bne _08077744 ldr r0, _08077740 @ =gSave adds r0, #0xb4 ldrb r0, [r0] movs r1, #1 movs r2, #1 bl sub_08077880 b _08077752 .align 2, 0 _08077740: .4byte gSave _08077744: ldr r0, _08077754 @ =gSave adds r0, #0xb5 ldrb r0, [r0] movs r1, #2 movs r2, #1 bl sub_08077880 _08077752: pop {pc} .align 2, 0 _08077754: .4byte gSave thumb_func_start sub_08077758 sub_08077758: @ 0x08077758 push {lr} adds r3, r0, #0 ldr r2, _08077794 @ =gPlayerState ldr r1, [r2, #0x30] movs r0, #0x80 lsls r0, r0, #7 ands r0, r1 cmp r0, #0 bne _0807779C movs r0, #0xd5 lsls r0, r0, #4 ands r1, r0 cmp r1, #0 bne _08077798 ldrb r0, [r2, #0x1e] ldrb r1, [r2, #0x1a] orrs r1, r0 adds r0, r3, #0 adds r0, #0x7a ldrh r0, [r0] orrs r1, r0 cmp r1, #0 bne _0807779C adds r0, r3, #0 adds r0, #0x42 ldrb r0, [r0] cmp r0, #0 bne _0807779C movs r0, #1 b _0807779E .align 2, 0 _08077794: .4byte gPlayerState _08077798: bl sub_0807A108 _0807779C: movs r0, #0 _0807779E: pop {pc} thumb_func_start sub_080777A0 sub_080777A0: @ 0x080777A0 push {r4, lr} ldr r3, _080777D0 @ =gPlayerState adds r0, r3, #0 adds r0, #0x92 ldrh r1, [r0] movs r4, #0x80 adds r0, r4, #0 ands r0, r1 cmp r0, #0 beq _08077870 ldr r1, [r3, #0x30] movs r0, #0x80 lsls r0, r0, #0xf ands r0, r1 cmp r0, #0 beq _080777D4 adds r1, r3, #0 adds r1, #0xa0 movs r0, #1 strb r0, [r1] bl sub_0807A108 _080777CC: movs r0, #1 b _0807787C .align 2, 0 _080777D0: .4byte gPlayerState _080777D4: ldr r2, _080777F4 @ =gArea ldrb r0, [r2, #0x18] cmp r0, #2 beq _080777FC cmp r0, #3 beq _08077810 ldr r0, _080777F8 @ =gUnk_0200AF00 adds r0, #0x2c ldrb r0, [r0] cmp r0, #0xc bne _0807787A adds r2, r3, #0 ldrb r0, [r2, #0x1c] cmp r0, #0 bne _0807787A b _08077838 .align 2, 0 _080777F4: .4byte gArea _080777F8: .4byte gUnk_0200AF00 _080777FC: ldrb r0, [r2, #0x1a] cmp r0, #0 bne _080777CC ldr r1, _0807780C @ =gPlayerEntity ldrb r0, [r1, #0xd] adds r0, #1 strb r0, [r1, #0xd] b _080777CC .align 2, 0 _0807780C: .4byte gPlayerEntity _08077810: ldrb r0, [r2, #0x1a] cmp r0, #0 bne _0807787A ands r1, r4 cmp r1, #0 beq _0807787A ldr r0, _08077834 @ =gPlayerEntity ldrb r1, [r0, #0xd] adds r1, #1 strb r1, [r0, #0xd] ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] movs r1, #0xb4 bl sub_0805E4E0 b _080777CC .align 2, 0 _08077834: .4byte gPlayerEntity _08077838: ldrb r0, [r2, #0x12] cmp r0, #0x11 beq _0807787A adds r0, r2, #0 adds r0, #0x90 ldrh r1, [r0] movs r0, #0xf0 lsls r0, r0, #4 ands r0, r1 cmp r0, #0 beq _0807787A ldr r0, [r2, #0x30] ldr r1, _0807786C @ =0x00040400 ands r0, r1 cmp r0, #0 bne _0807787A ldrb r0, [r2, #2] cmp r0, #0 bne _0807787A ldrb r0, [r2, #4] cmp r0, #0 bne _0807787A movs r0, #0x18 strb r0, [r2, #0xc] b _0807787A .align 2, 0 _0807786C: .4byte 0x00040400 _08077870: ldr r0, [r3, #0x30] movs r1, #0x20 ands r0, r1 cmp r0, #0 bne _080777CC _0807787A: movs r0, #0 _0807787C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08077880 sub_08077880: @ 0x08077880 push {r4, r5, r6, lr} adds r4, r0, #0 adds r6, r1, #0 subs r0, r4, #1 cmp r0, #0x1e bhi _080778C0 lsls r0, r4, #1 adds r0, r0, r4 lsls r0, r0, #2 ldr r1, _080778C4 @ =gUnk_0811BE48 adds r5, r0, r1 ldr r1, _080778C8 @ =gUnk_03004010 ldrb r0, [r5] cmp r0, #0 beq _080778A0 adds r1, #2 _080778A0: ldrh r0, [r1] ands r0, r6 cmp r0, #0 bne _080778AC cmp r2, #0 beq _080778C0 _080778AC: adds r0, r4, #0 bl sub_0807794C adds r1, r0, #0 cmp r1, #0 beq _080778C0 ldrb r0, [r5, #1] strb r0, [r1, #9] strb r4, [r1, #1] strb r6, [r1, #3] _080778C0: pop {r4, r5, r6, pc} .align 2, 0 _080778C4: .4byte gUnk_0811BE48 _080778C8: .4byte gUnk_03004010 thumb_func_start sub_080778CC sub_080778CC: @ 0x080778CC push {lr} ldr r2, _08077920 @ =gPlayerState ldr r0, [r2, #0x30] ldr r1, _08077924 @ =0x000400A0 ands r0, r1 cmp r0, #0 bne _0807791C ldr r0, _08077928 @ =gPlayerEntity adds r0, #0x79 ldrb r0, [r0] cmp r0, #0 bne _080778FA ldrb r0, [r2, #5] cmp r0, #0 bne _080778FA adds r0, r2, #0 adds r0, #0x92 ldrh r1, [r0] movs r0, #0x80 lsls r0, r0, #8 ands r0, r1 cmp r0, #0 beq _0807791C _080778FA: bl sub_080789A8 cmp r0, #0 bne _08077910 ldr r0, _08077920 @ =gPlayerState adds r0, #0x90 ldrh r1, [r0] ldr r0, _0807792C @ =0x00000F03 ands r0, r1 cmp r0, #0 bne _0807791C _08077910: movs r0, #0x1b bl sub_0807794C adds r1, r0, #0 cmp r1, #0 bne _08077930 _0807791C: movs r0, #0 b _08077940 .align 2, 0 _08077920: .4byte gPlayerState _08077924: .4byte 0x000400A0 _08077928: .4byte gPlayerEntity _0807792C: .4byte 0x00000F03 _08077930: movs r0, #0x1b strb r0, [r1, #1] ldr r0, _08077944 @ =gUnk_0811BE48 ldr r2, _08077948 @ =0x00000145 adds r0, r0, r2 ldrb r0, [r0] strb r0, [r1, #9] movs r0, #1 _08077940: pop {pc} .align 2, 0 _08077944: .4byte gUnk_0811BE48 _08077948: .4byte 0x00000145 thumb_func_start sub_0807794C sub_0807794C: @ 0x0807794C push {lr} adds r2, r0, #0 ldr r0, _080779B8 @ =gPlayerState ldrb r1, [r0, #0xc] adds r3, r0, #0 cmp r1, #0x18 bne _0807795E cmp r2, #0x1b bne _080779B2 _0807795E: ldr r0, [r3, #0x30] movs r1, #0x88 lsls r1, r1, #0xf ands r0, r1 cmp r0, #0 beq _0807796E cmp r2, #6 bhi _080779B2 _0807796E: ldrb r0, [r3, #2] cmp r0, #0 bne _0807797C ldr r0, _080779BC @ =gPlayerEntity ldr r0, [r0, #0x34] cmp r0, #0 beq _08077980 _0807797C: cmp r2, #6 bhi _080779B2 _08077980: ldr r0, [r3, #0x30] movs r1, #0x80 ands r0, r1 cmp r0, #0 beq _0807799A ldr r0, _080779C0 @ =gUnk_0811BE48 lsls r1, r2, #1 adds r1, r1, r2 lsls r1, r1, #2 adds r1, r1, r0 ldrb r0, [r1, #8] cmp r0, #0 beq _080779B2 _0807799A: ldrb r0, [r3, #0x12] cmp r0, #0x11 bne _080779C4 adds r0, r3, #0 adds r0, #0x37 ldrb r0, [r0] cmp r0, #0 beq _080779C4 adds r0, r2, #0 subs r0, #0x14 cmp r0, #1 bls _080779C4 _080779B2: movs r0, #0 b _080779DE .align 2, 0 _080779B8: .4byte gPlayerState _080779BC: .4byte gPlayerEntity _080779C0: .4byte gUnk_0811BE48 _080779C4: ldr r1, _080779E0 @ =gUnk_0811BE48 lsls r0, r2, #1 adds r0, r0, r2 lsls r0, r0, #2 adds r0, r0, r1 ldrb r0, [r0, #2] ldr r1, _080779E4 @ =gUnk_0811BFC8 lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r2, #0 bl _call_via_r1 _080779DE: pop {pc} .align 2, 0 _080779E0: .4byte gUnk_0811BE48 _080779E4: .4byte gUnk_0811BFC8 thumb_func_start sub_080779E8 sub_080779E8: @ 0x080779E8 movs r0, #0 bx lr thumb_func_start sub_080779EC sub_080779EC: @ 0x080779EC push {lr} ldr r1, _08077A00 @ =gUnk_03000B80 adds r0, r1, #0 adds r0, #0x25 ldrb r0, [r0] cmp r0, #0 bne _08077A04 adds r0, r1, #0 adds r0, #0x1c b _08077A16 .align 2, 0 _08077A00: .4byte gUnk_03000B80 _08077A04: adds r0, r1, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0 beq _08077A12 movs r0, #0 b _08077A16 _08077A12: adds r0, r1, #0 adds r0, #0x38 _08077A16: pop {pc} thumb_func_start sub_08077A18 sub_08077A18: @ 0x08077A18 push {lr} adds r1, r0, #0 ldr r0, _08077A3C @ =gPlayerState ldrb r0, [r0, #5] cmp r0, #0 bne _08077A44 ldr r0, _08077A40 @ =gUnk_03000B80 ldrb r2, [r0, #0x1d] cmp r1, r2 beq _08077A44 adds r0, #0x39 ldrb r0, [r0] cmp r1, r0 beq _08077A44 adds r0, r1, #0 bl sub_080779EC b _08077A46 .align 2, 0 _08077A3C: .4byte gPlayerState _08077A40: .4byte gUnk_03000B80 _08077A44: movs r0, #0 _08077A46: pop {pc} thumb_func_start sub_08077A48 sub_08077A48: @ 0x08077A48 push {r4, r5, r6, lr} adds r2, r0, #0 ldr r6, _08077A88 @ =gPlayerState ldrb r0, [r6, #5] cmp r0, #0 bne _08077A94 ldrb r1, [r6, #2] movs r0, #0x20 ands r0, r1 lsls r0, r0, #0x18 lsrs r4, r0, #0x18 cmp r4, #0 bne _08077A94 ldr r0, _08077A8C @ =gUnk_0811BE48 lsls r1, r2, #1 adds r1, r1, r2 lsls r1, r1, #2 adds r1, r1, r0 ldr r5, _08077A90 @ =gUnk_03000B80 ldrb r0, [r1, #1] ldrb r1, [r5, #9] cmp r0, r1 blo _08077A94 adds r0, r5, #0 movs r1, #0 bl sub_08077E78 strb r4, [r6, #1] strb r4, [r6, #0x1c] strb r4, [r6, #0x1b] adds r0, r5, #0 b _08077A96 .align 2, 0 _08077A88: .4byte gPlayerState _08077A8C: .4byte gUnk_0811BE48 _08077A90: .4byte gUnk_03000B80 _08077A94: movs r0, #0 _08077A96: pop {r4, r5, r6, pc} thumb_func_start sub_08077A98 sub_08077A98: @ 0x08077A98 push {lr} ldr r0, _08077AB8 @ =gSave adds r0, #0xac ldrb r0, [r0] cmp r0, #0 beq _08077AC4 ldr r0, _08077ABC @ =gPlayerState ldrb r0, [r0, #5] cmp r0, #0 bne _08077AC4 ldr r1, _08077AC0 @ =gUnk_03000B80 ldrb r0, [r1, #9] cmp r0, #0 bne _08077AC4 adds r0, r1, #0 b _08077AC6 .align 2, 0 _08077AB8: .4byte gSave _08077ABC: .4byte gPlayerState _08077AC0: .4byte gUnk_03000B80 _08077AC4: movs r0, #0 _08077AC6: pop {pc} thumb_func_start sub_08077AC8 sub_08077AC8: @ 0x08077AC8 push {lr} movs r2, #0 ldr r1, _08077AD8 @ =gUnk_03000B80 _08077ACE: ldrb r0, [r1, #9] cmp r0, #0 beq _08077ADC movs r0, #0 b _08077AE6 .align 2, 0 _08077AD8: .4byte gUnk_03000B80 _08077ADC: adds r1, #0x1c adds r2, #1 cmp r2, #3 bls _08077ACE ldr r0, _08077AE8 @ =gUnk_03000BD4 _08077AE6: pop {pc} .align 2, 0 _08077AE8: .4byte gUnk_03000BD4 thumb_func_start sub_08077AEC sub_08077AEC: @ 0x08077AEC push {lr} ldr r0, _08077B14 @ =gUnk_03000BD4 movs r1, #3 bl sub_08077E78 ldr r2, _08077B18 @ =gPlayerState ldr r0, [r2, #0x30] ldr r1, _08077B1C @ =0xFF7FFFFF ands r0, r1 str r0, [r2, #0x30] movs r0, #0x10 bl IsItemEquipped adds r1, r0, #0 cmp r1, #2 beq _08077B12 movs r0, #0xf bl ForceEquipItem _08077B12: pop {pc} .align 2, 0 _08077B14: .4byte gUnk_03000BD4 _08077B18: .4byte gPlayerState _08077B1C: .4byte 0xFF7FFFFF thumb_func_start sub_08077B20 sub_08077B20: @ 0x08077B20 push {lr} bl ResetPlayer bl sub_08077AEC pop {pc}