.include "constants/gba_constants.inc" .include "constants/species_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start Task_RunPerStepCallback Task_RunPerStepCallback: @ 806943C push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _08069460 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r2, 0x8 ldrsh r1, [r1, r2] ldr r2, _08069464 @ =gUnknown_08376364 lsls r1, 2 adds r1, r2 ldr r1, [r1] bl _call_via_r1 pop {r0} bx r0 .align 2, 0 _08069460: .4byte gTasks _08069464: .4byte gUnknown_08376364 thumb_func_end Task_RunPerStepCallback thumb_func_start RunTimeBasedEvents RunTimeBasedEvents: @ 8069468 push {r4,lr} adds r4, r0, 0 movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0 beq _0806947A cmp r0, 0x1 beq _08069498 b _080694AC _0806947A: ldr r0, _08069494 @ =gMain ldr r0, [r0, 0x20] movs r1, 0x80 lsls r1, 5 ands r0, r1 cmp r0, 0 beq _080694AC bl DoTimeBasedEvents ldrh r0, [r4] adds r0, 0x1 b _080694AA .align 2, 0 _08069494: .4byte gMain _08069498: ldr r0, _080694B4 @ =gMain ldr r0, [r0, 0x20] movs r1, 0x80 lsls r1, 5 ands r0, r1 cmp r0, 0 bne _080694AC ldrh r0, [r4] subs r0, 0x1 _080694AA: strh r0, [r4] _080694AC: pop {r4} pop {r0} bx r0 .align 2, 0 _080694B4: .4byte gMain thumb_func_end RunTimeBasedEvents thumb_func_start Task_RunTimeBasedEvents Task_RunTimeBasedEvents: @ 80694B8 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _080694E8 @ =gTasks + 0x8 adds r4, r1, r0 bl ScriptContext2_IsEnabled lsls r0, 24 cmp r0, 0 bne _080694E0 adds r0, r4, 0 bl RunTimeBasedEvents adds r0, r4, 0x2 adds r1, r4, 0x4 bl sub_80540D0 _080694E0: pop {r4} pop {r0} bx r0 .align 2, 0 _080694E8: .4byte gTasks + 0x8 thumb_func_end Task_RunTimeBasedEvents thumb_func_start SetUpFieldTasks SetUpFieldTasks: @ 80694EC push {r4,r5,lr} ldr r5, _08069548 @ =Task_RunPerStepCallback adds r0, r5, 0 bl FuncIsActiveTask lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _08069516 adds r0, r5, 0 movs r1, 0x50 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, _0806954C @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 strh r4, [r1, 0x8] _08069516: ldr r4, _08069550 @ =Task_MuddySlope adds r0, r4, 0 bl FuncIsActiveTask lsls r0, 24 cmp r0, 0 bne _0806952C adds r0, r4, 0 movs r1, 0x50 bl CreateTask _0806952C: ldr r4, _08069554 @ =Task_RunTimeBasedEvents adds r0, r4, 0 bl FuncIsActiveTask lsls r0, 24 cmp r0, 0 bne _08069542 adds r0, r4, 0 movs r1, 0x50 bl CreateTask _08069542: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08069548: .4byte Task_RunPerStepCallback _0806954C: .4byte gTasks _08069550: .4byte Task_MuddySlope _08069554: .4byte Task_RunTimeBasedEvents thumb_func_end SetUpFieldTasks thumb_func_start ActivatePerStepCallback ActivatePerStepCallback: @ 8069558 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, _08069590 @ =Task_RunPerStepCallback bl FindTaskIdByFunc lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0xFF beq _0806959A lsls r0, r1, 2 adds r0, r1 lsls r0, 3 ldr r1, _08069594 @ =gTasks + 0x8 adds r1, r0, r1 movs r2, 0 adds r0, r1, 0 adds r0, 0x1E _0806957C: strh r2, [r0] subs r0, 0x2 cmp r0, r1 bge _0806957C cmp r4, 0x7 bls _08069598 movs r0, 0 strh r0, [r1] b _0806959A .align 2, 0 _08069590: .4byte Task_RunPerStepCallback _08069594: .4byte gTasks + 0x8 _08069598: strh r4, [r1] _0806959A: pop {r4} pop {r0} bx r0 thumb_func_end ActivatePerStepCallback thumb_func_start ResetFieldTasksArgs ResetFieldTasksArgs: @ 80695A0 push {lr} ldr r0, _080695D0 @ =Task_RunPerStepCallback bl FindTaskIdByFunc lsls r0, 24 lsrs r1, r0, 24 ldr r0, _080695D4 @ =Task_RunTimeBasedEvents bl FindTaskIdByFunc lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0xFF beq _080695CA lsls r0, r1, 2 adds r0, r1 lsls r0, 3 ldr r1, _080695D8 @ =gTasks + 0x8 adds r0, r1 movs r1, 0 strh r1, [r0, 0x2] strh r1, [r0, 0x4] _080695CA: pop {r0} bx r0 .align 2, 0 _080695D0: .4byte Task_RunPerStepCallback _080695D4: .4byte Task_RunTimeBasedEvents _080695D8: .4byte gTasks + 0x8 thumb_func_end ResetFieldTasksArgs thumb_func_start DummyPerStepCallback DummyPerStepCallback: @ 80695DC bx lr thumb_func_end DummyPerStepCallback thumb_func_start sub_80695E0 sub_80695E0: @ 80695E0 push {r4,r5,lr} adds r5, r0, 0 lsls r1, 24 lsrs r4, r1, 24 adds r0, r4, 0 bl sub_80576A0 lsls r0, 24 cmp r0, 0 beq _080695F8 adds r0, r5, 0 b _08069630 _080695F8: adds r0, r4, 0 bl sub_80576B4 lsls r0, 24 cmp r0, 0 beq _0806960A adds r0, r5, 0 adds r0, 0x8 b _08069630 _0806960A: adds r0, r4, 0 bl sub_80576C8 lsls r0, 24 cmp r0, 0 beq _0806961C adds r0, r5, 0 adds r0, 0x10 b _08069630 _0806961C: adds r0, r4, 0 bl sub_80576DC lsls r0, 24 cmp r0, 0 bne _0806962C movs r0, 0 b _08069630 _0806962C: adds r0, r5, 0 adds r0, 0x18 _08069630: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_80695E0 thumb_func_start sub_8069638 sub_8069638: @ 8069638 push {r4-r7,lr} mov r7, r8 push {r7} adds r5, r0, 0 mov r8, r3 lsls r1, 16 asrs r6, r1, 16 lsls r2, 16 asrs r7, r2, 16 adds r0, r6, 0 adds r1, r7, 0 bl MapGridGetMetatileBehaviorAt adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 adds r0, r5, 0 bl sub_80695E0 adds r4, r0, 0 adds r5, r4, 0 cmp r4, 0 beq _080696B6 movs r0, 0 ldrsb r0, [r4, r0] adds r0, r6, r0 movs r1, 0x1 ldrsb r1, [r4, r1] adds r1, r7, r1 ldrh r2, [r4, 0x2] bl MapGridSetMetatileIdAt mov r0, r8 cmp r0, 0 beq _0806968E movs r0, 0 ldrsb r0, [r4, r0] adds r0, r6, r0 movs r1, 0x1 ldrsb r1, [r4, r1] adds r1, r7, r1 bl CurrentMapDrawMetatileAt _0806968E: movs r0, 0x4 ldrsb r0, [r5, r0] adds r0, r6, r0 movs r1, 0x5 ldrsb r1, [r5, r1] adds r1, r7, r1 ldrh r2, [r5, 0x6] bl MapGridSetMetatileIdAt mov r0, r8 cmp r0, 0 beq _080696B6 movs r0, 0x4 ldrsb r0, [r5, r0] adds r0, r6, r0 movs r1, 0x5 ldrsb r1, [r5, r1] adds r1, r7, r1 bl CurrentMapDrawMetatileAt _080696B6: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_8069638 thumb_func_start sub_80696C0 sub_80696C0: @ 80696C0 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 adds r3, r2, 0 ldr r0, _080696E0 @ =gUnknown_08376384 lsls r4, 16 asrs r4, 16 lsls r5, 16 asrs r5, 16 adds r1, r4, 0 adds r2, r5, 0 bl sub_8069638 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080696E0: .4byte gUnknown_08376384 thumb_func_end sub_80696C0 thumb_func_start sub_80696E4 sub_80696E4: @ 80696E4 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 adds r3, r2, 0 ldr r0, _08069704 @ =gUnknown_083763A4 lsls r4, 16 asrs r4, 16 lsls r5, 16 asrs r5, 16 adds r1, r4, 0 adds r2, r5, 0 bl sub_8069638 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08069704: .4byte gUnknown_083763A4 thumb_func_end sub_80696E4 thumb_func_start sub_8069708 sub_8069708: @ 8069708 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 adds r3, r2, 0 ldr r0, _08069728 @ =gUnknown_083763C4 lsls r4, 16 asrs r4, 16 lsls r5, 16 asrs r5, 16 adds r1, r4, 0 adds r2, r5, 0 bl sub_8069638 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08069728: .4byte gUnknown_083763C4 thumb_func_end sub_8069708 thumb_func_start sub_806972C sub_806972C: @ 806972C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r0, 16 lsrs r0, 16 mov r8, r0 mov r10, r8 lsls r1, 16 lsrs r7, r1, 16 mov r9, r7 lsls r2, 16 asrs r6, r2, 16 lsls r3, 16 asrs r5, r3, 16 adds r0, r6, 0 adds r1, r5, 0 bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl sub_80576A0 lsls r0, 24 cmp r0, 0 beq _08069770 lsls r0, r7, 16 asrs r0, 16 cmp r0, r5 ble _080697B6 _0806976C: movs r0, 0 b _080697B8 _08069770: adds r0, r4, 0 bl sub_80576B4 lsls r0, 24 cmp r0, 0 beq _08069788 mov r1, r9 lsls r0, r1, 16 asrs r0, 16 cmp r0, r5 bge _080697B6 b _0806976C _08069788: adds r0, r4, 0 bl sub_80576C8 lsls r0, 24 cmp r0, 0 beq _080697A0 mov r1, r8 lsls r0, r1, 16 asrs r0, 16 cmp r0, r6 ble _080697B6 b _0806976C _080697A0: adds r0, r4, 0 bl sub_80576DC lsls r0, 24 cmp r0, 0 beq _080697B6 mov r1, r10 lsls r0, r1, 16 asrs r0, 16 cmp r0, r6 blt _0806976C _080697B6: movs r0, 0x1 _080697B8: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_806972C thumb_func_start sub_80697C8 sub_80697C8: @ 80697C8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} lsls r2, 16 lsrs r2, 16 mov r8, r2 mov r10, r8 lsls r3, 16 lsrs r7, r3, 16 mov r9, r7 lsls r0, 16 asrs r6, r0, 16 lsls r1, 16 asrs r5, r1, 16 adds r0, r6, 0 adds r1, r5, 0 bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r4, r0, 24 adds r0, r4, 0 bl sub_80576A0 lsls r0, 24 cmp r0, 0 beq _0806980C lsls r0, r7, 16 asrs r0, 16 cmp r5, r0 bge _08069852 _08069808: movs r0, 0 b _08069854 _0806980C: adds r0, r4, 0 bl sub_80576B4 lsls r0, 24 cmp r0, 0 beq _08069824 mov r1, r9 lsls r0, r1, 16 asrs r0, 16 cmp r5, r0 ble _08069852 b _08069808 _08069824: adds r0, r4, 0 bl sub_80576C8 lsls r0, 24 cmp r0, 0 beq _0806983C mov r1, r8 lsls r0, r1, 16 asrs r0, 16 cmp r6, r0 bge _08069852 b _08069808 _0806983C: adds r0, r4, 0 bl sub_80576DC lsls r0, 24 cmp r0, 0 beq _08069852 mov r1, r10 lsls r0, r1, 16 asrs r0, 16 cmp r6, r0 bgt _08069808 _08069852: movs r0, 0x1 _08069854: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_80697C8 thumb_func_start PerStepCallback_8069864 PerStepCallback_8069864: @ 8069864 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _08069898 @ =gTasks + 0x8 adds r4, r1, r0 mov r5, sp adds r5, 0x2 mov r0, sp adds r1, r5, 0 bl PlayerGetDestCoords movs r1, 0x2 ldrsh r0, [r4, r1] adds r6, r5, 0 cmp r0, 0x1 beq _080698BE cmp r0, 0x1 bgt _0806989C cmp r0, 0 beq _080698A2 b _080699CE .align 2, 0 _08069898: .4byte gTasks + 0x8 _0806989C: cmp r0, 0x2 beq _0806998C b _080699CE _080698A2: mov r0, sp ldrh r0, [r0] strh r0, [r4, 0x4] ldrh r0, [r5] strh r0, [r4, 0x6] mov r0, sp movs r2, 0 ldrsh r0, [r0, r2] movs r3, 0 ldrsh r1, [r5, r3] movs r2, 0x1 bl sub_80696E4 b _080699CA _080698BE: mov r0, sp movs r7, 0 ldrsh r1, [r0, r7] movs r2, 0x4 ldrsh r0, [r4, r2] cmp r1, r0 bne _080698D8 movs r3, 0 ldrsh r1, [r5, r3] movs r7, 0x6 ldrsh r0, [r4, r7] cmp r1, r0 beq _080699CE _080698D8: mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r5, r2] movs r3, 0x4 ldrsh r2, [r4, r3] movs r5, 0x6 ldrsh r3, [r4, r5] bl sub_806972C cmp r0, 0 beq _08069920 movs r7, 0x4 ldrsh r0, [r4, r7] movs r2, 0x6 ldrsh r1, [r4, r2] movs r2, 0x1 bl sub_80696C0 movs r3, 0x4 ldrsh r0, [r4, r3] movs r5, 0x6 ldrsh r1, [r4, r5] movs r2, 0 bl sub_8069708 ldrh r0, [r4, 0x4] strh r0, [r4, 0x8] ldrh r0, [r4, 0x6] strh r0, [r4, 0xA] movs r0, 0x2 strh r0, [r4, 0x2] movs r0, 0x8 strh r0, [r4, 0xC] b _0806992A _08069920: movs r7, 0x1 negs r7, r7 adds r0, r7, 0 strh r0, [r4, 0x8] strh r0, [r4, 0xA] _0806992A: mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] adds r5, r6, 0 movs r2, 0 ldrsh r1, [r5, r2] movs r3, 0x4 ldrsh r2, [r4, r3] movs r7, 0x6 ldrsh r3, [r4, r7] bl sub_80697C8 cmp r0, 0 beq _0806995E mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r5, r2] movs r2, 0x1 bl sub_80696C0 movs r0, 0x2 strh r0, [r4, 0x2] movs r0, 0x8 strh r0, [r4, 0xC] _0806995E: mov r0, sp ldrh r0, [r0] strh r0, [r4, 0x4] ldrh r0, [r6] strh r0, [r4, 0x6] mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] movs r5, 0 ldrsh r1, [r6, r5] bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 bl MetatileBehavior_IsPacifidlogLog lsls r0, 24 cmp r0, 0 beq _080699CE movs r0, 0x46 bl PlaySE b _080699CE _0806998C: ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 bne _080699CE mov r0, sp movs r7, 0 ldrsh r0, [r0, r7] movs r2, 0 ldrsh r1, [r5, r2] movs r2, 0x1 bl sub_80696E4 movs r3, 0x8 ldrsh r0, [r4, r3] movs r1, 0x1 negs r1, r1 cmp r0, r1 beq _080699CA movs r5, 0xA ldrsh r0, [r4, r5] cmp r0, r1 beq _080699CA movs r7, 0x8 ldrsh r0, [r4, r7] movs r2, 0xA ldrsh r1, [r4, r2] movs r2, 0x1 bl sub_8069708 _080699CA: movs r0, 0x1 strh r0, [r4, 0x2] _080699CE: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 thumb_func_end PerStepCallback_8069864 thumb_func_start sub_80699D8 sub_80699D8: @ 80699D8 push {r4,r5,lr} lsls r0, 16 lsrs r4, r0, 16 lsls r1, 16 lsrs r5, r1, 16 bl PlayerGetZCoord lsls r0, 24 lsrs r0, 24 movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _08069A32 lsls r0, r4, 16 asrs r4, r0, 16 lsls r0, r5, 16 asrs r5, r0, 16 adds r0, r4, 0 adds r1, r5, 0 bl MapGridGetMetatileIdAt adds r1, r0, 0 ldr r0, _08069A14 @ =0x0000024e cmp r1, r0 beq _08069A18 adds r0, 0x8 cmp r1, r0 beq _08069A28 b _08069A32 .align 2, 0 _08069A14: .4byte 0x0000024e _08069A18: ldr r2, _08069A24 @ =0x0000024f adds r0, r4, 0 adds r1, r5, 0 bl MapGridSetMetatileIdAt b _08069A32 .align 2, 0 _08069A24: .4byte 0x0000024f _08069A28: ldr r2, _08069A38 @ =0x00000257 adds r0, r4, 0 adds r1, r5, 0 bl MapGridSetMetatileIdAt _08069A32: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08069A38: .4byte 0x00000257 thumb_func_end sub_80699D8 thumb_func_start sub_8069A3C sub_8069A3C: @ 8069A3C push {r4,r5,lr} lsls r0, 16 lsrs r4, r0, 16 lsls r1, 16 lsrs r5, r1, 16 bl PlayerGetZCoord lsls r0, 24 lsrs r0, 24 movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _08069A96 lsls r0, r4, 16 asrs r4, r0, 16 lsls r0, r5, 16 asrs r5, r0, 16 adds r0, r4, 0 adds r1, r5, 0 bl MapGridGetMetatileIdAt adds r1, r0, 0 ldr r0, _08069A78 @ =0x0000024f cmp r1, r0 beq _08069A7C adds r0, 0x8 cmp r1, r0 beq _08069A8C b _08069A96 .align 2, 0 _08069A78: .4byte 0x0000024f _08069A7C: ldr r2, _08069A88 @ =0x0000024e adds r0, r4, 0 adds r1, r5, 0 bl MapGridSetMetatileIdAt b _08069A96 .align 2, 0 _08069A88: .4byte 0x0000024e _08069A8C: ldr r2, _08069A9C @ =0x00000256 adds r0, r4, 0 adds r1, r5, 0 bl MapGridSetMetatileIdAt _08069A96: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08069A9C: .4byte 0x00000256 thumb_func_end sub_8069A3C thumb_func_start PerStepCallback_8069AA0 PerStepCallback_8069AA0: @ 8069AA0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x8 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _08069ADC @ =gTasks + 0x8 adds r6, r1, r0 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl PlayerGetDestCoords movs r0, 0x2 ldrsh r5, [r6, r0] mov r9, r4 cmp r5, 0x1 beq _08069B34 cmp r5, 0x1 bgt _08069AE0 cmp r5, 0 beq _08069AE8 b _08069CA6 .align 2, 0 _08069ADC: .4byte gTasks + 0x8 _08069AE0: cmp r5, 0x2 bne _08069AE6 b _08069C14 _08069AE6: b _08069CA6 _08069AE8: mov r0, sp ldrh r0, [r0] strh r0, [r6, 0x4] mov r1, r9 ldrh r0, [r1] strh r0, [r6, 0x6] mov r0, sp movs r2, 0 ldrsh r0, [r0, r2] movs r3, 0 ldrsh r1, [r1, r3] bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 bl MetatileBehavior_IsFortreeBridge lsls r0, 24 cmp r0, 0 bne _08069B12 b _08069CA2 _08069B12: mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] mov r2, r9 movs r3, 0 ldrsh r1, [r2, r3] bl sub_80699D8 mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] mov r2, r9 movs r3, 0 ldrsh r1, [r2, r3] bl CurrentMapDrawMetatileAt b _08069CA2 _08069B34: ldrh r0, [r6, 0x6] mov r8, r0 mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] ldrh r2, [r6, 0x4] mov r10, r2 movs r3, 0x4 ldrsh r7, [r6, r3] cmp r0, r7 bne _08069B5C mov r0, r9 movs r2, 0 ldrsh r1, [r0, r2] mov r3, r8 lsls r0, r3, 16 asrs r0, 16 cmp r1, r0 bne _08069B5C b _08069CA6 _08069B5C: mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] mov r2, r9 movs r3, 0 ldrsh r1, [r2, r3] bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 bl MetatileBehavior_IsFortreeBridge lsls r0, 24 lsrs r0, 24 str r0, [sp, 0x4] mov r0, r8 lsls r4, r0, 16 asrs r1, r4, 16 adds r0, r7, 0 bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 bl MetatileBehavior_IsFortreeBridge lsls r0, 24 lsrs r7, r0, 24 bl PlayerGetZCoord movs r1, 0 ands r5, r0 lsls r0, r5, 24 adds r5, r4, 0 cmp r0, 0 bne _08069BA4 movs r1, 0x1 _08069BA4: cmp r1, 0 beq _08069BB8 ldr r1, [sp, 0x4] cmp r1, 0x1 beq _08069BB2 cmp r7, 0x1 bne _08069BB8 _08069BB2: movs r0, 0x47 bl PlaySE _08069BB8: cmp r7, 0 beq _08069BF4 mov r2, r10 lsls r4, r2, 16 asrs r4, 16 asrs r5, 16 adds r0, r4, 0 adds r1, r5, 0 bl sub_8069A3C adds r0, r4, 0 adds r1, r5, 0 bl CurrentMapDrawMetatileAt mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] mov r2, r9 movs r3, 0 ldrsh r1, [r2, r3] bl sub_80699D8 mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] mov r2, r9 movs r3, 0 ldrsh r1, [r2, r3] bl CurrentMapDrawMetatileAt _08069BF4: mov r0, r10 strh r0, [r6, 0x8] mov r1, r8 strh r1, [r6, 0xA] mov r0, sp ldrh r0, [r0] strh r0, [r6, 0x4] mov r2, r9 ldrh r0, [r2] strh r0, [r6, 0x6] cmp r7, 0 beq _08069CA6 movs r0, 0x10 strh r0, [r6, 0xC] movs r0, 0x2 strh r0, [r6, 0x2] _08069C14: ldrh r0, [r6, 0xC] subs r0, 0x1 strh r0, [r6, 0xC] ldrh r3, [r6, 0x8] mov r10, r3 ldrh r0, [r6, 0xA] mov r8, r0 movs r1, 0xC ldrsh r0, [r6, r1] movs r1, 0x7 bl __modsi3 lsls r0, 16 asrs r0, 16 cmp r0, 0x7 bhi _08069C9A lsls r0, 2 ldr r1, _08069C40 @ =_08069C44 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08069C40: .4byte _08069C44 .align 2, 0 _08069C44: .4byte _08069C64 .4byte _08069C9A .4byte _08069C9A .4byte _08069C9A .4byte _08069C76 .4byte _08069C9A .4byte _08069C9A .4byte _08069C9A _08069C64: mov r2, r10 lsls r0, r2, 16 asrs r0, 16 mov r3, r8 lsls r1, r3, 16 asrs r1, 16 bl CurrentMapDrawMetatileAt b _08069C9A _08069C76: mov r0, r10 lsls r5, r0, 16 asrs r5, 16 mov r1, r8 lsls r4, r1, 16 asrs r4, 16 adds r0, r5, 0 adds r1, r4, 0 bl sub_80699D8 adds r0, r5, 0 adds r1, r4, 0 bl CurrentMapDrawMetatileAt adds r0, r5, 0 adds r1, r4, 0 bl sub_8069A3C _08069C9A: movs r2, 0xC ldrsh r0, [r6, r2] cmp r0, 0 bne _08069CA6 _08069CA2: movs r0, 0x1 strh r0, [r6, 0x2] _08069CA6: add sp, 0x8 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 thumb_func_end PerStepCallback_8069AA0 thumb_func_start sub_8069CB8 sub_8069CB8: @ 8069CB8 push {lr} lsls r1, 16 lsrs r1, 16 lsls r0, 16 ldr r2, _08069CE8 @ =0xfffd0000 adds r0, r2 lsrs r0, 16 cmp r0, 0xA bhi _08069CF4 lsls r0, r1, 16 asrs r1, r0, 16 ldr r2, _08069CEC @ =0xfffa0000 adds r0, r2 lsrs r0, 16 cmp r0, 0xD bhi _08069CF4 ldr r0, _08069CF0 @ =gUnknown_083763E4 lsls r1, 1 adds r1, r0 ldrh r0, [r1] cmp r0, 0 beq _08069CF4 movs r0, 0x1 b _08069CF6 .align 2, 0 _08069CE8: .4byte 0xfffd0000 _08069CEC: .4byte 0xfffa0000 _08069CF0: .4byte gUnknown_083763E4 _08069CF4: movs r0, 0 _08069CF6: pop {r1} bx r1 thumb_func_end sub_8069CB8 thumb_func_start sub_8069CFC sub_8069CFC: @ 8069CFC push {r4,r5,lr} lsls r0, 16 asrs r5, r0, 16 lsls r1, 16 asrs r4, r1, 16 adds r0, r5, 0 adds r1, r4, 0 bl sub_8069CB8 cmp r0, 0 beq _08069D2A ldr r1, _08069D30 @ =gUnknown_083763E4 lsls r0, r4, 1 adds r0, r1 ldrh r0, [r0] bl GetVarPointer subs r2, r5, 0x3 movs r1, 0x1 lsls r1, r2 ldrh r2, [r0] orrs r1, r2 strh r1, [r0] _08069D2A: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08069D30: .4byte gUnknown_083763E4 thumb_func_end sub_8069CFC thumb_func_start sub_8069D34 sub_8069D34: @ 8069D34 push {r4,r5,lr} lsls r0, 16 asrs r5, r0, 16 lsls r1, 16 asrs r4, r1, 16 adds r0, r5, 0 adds r1, r4, 0 bl sub_8069CB8 cmp r0, 0 beq _08069D66 ldr r1, _08069D6C @ =gUnknown_083763E4 lsls r0, r4, 1 adds r0, r1 ldrh r0, [r0] bl VarGet lsls r0, 16 subs r2, r5, 0x3 movs r1, 0x80 lsls r1, 9 lsls r1, r2 ands r1, r0 cmp r1, 0 bne _08069D70 _08069D66: movs r0, 0 b _08069D72 .align 2, 0 _08069D6C: .4byte gUnknown_083763E4 _08069D70: movs r0, 0x1 _08069D72: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_8069D34 thumb_func_start sub_8069D78 sub_8069D78: @ 8069D78 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, _08069DCC @ =gMapHeader ldr r0, [r0] ldr r1, [r0] mov r9, r1 ldr r7, [r0, 0x4] movs r5, 0 cmp r5, r9 bge _08069DC0 _08069D90: movs r4, 0 adds r0, r5, 0x1 mov r8, r0 cmp r4, r7 bge _08069DBA lsls r6, r5, 16 _08069D9C: lsls r1, r4, 16 asrs r1, 16 asrs r0, r6, 16 bl sub_8069D34 cmp r0, 0x1 bne _08069DB4 adds r1, r4, 0x7 adds r0, r5, 0x7 ldr r2, _08069DD0 @ =0x0000020e bl MapGridSetMetatileIdAt _08069DB4: adds r4, 0x1 cmp r4, r7 blt _08069D9C _08069DBA: mov r5, r8 cmp r5, r9 blt _08069D90 _08069DC0: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08069DCC: .4byte gMapHeader _08069DD0: .4byte 0x0000020e thumb_func_end sub_8069D78 thumb_func_start PerStepCallback_8069DD4 PerStepCallback_8069DD4: @ 8069DD4 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _08069DF8 @ =gTasks + 0x8 adds r5, r1, r0 movs r1, 0x2 ldrsh r0, [r5, r1] cmp r0, 0x1 beq _08069E20 cmp r0, 0x1 bgt _08069DFC cmp r0, 0 beq _08069E08 b _08069F56 .align 2, 0 _08069DF8: .4byte gTasks + 0x8 _08069DFC: cmp r0, 0x2 beq _08069EB6 cmp r0, 0x3 bne _08069E06 b _08069F10 _08069E06: b _08069F56 _08069E08: mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl PlayerGetDestCoords mov r0, sp ldrh r0, [r0] strh r0, [r5, 0x4] ldrh r0, [r4] strh r0, [r5, 0x6] b _08069F52 _08069E20: mov r7, sp adds r7, 0x2 mov r0, sp adds r1, r7, 0 bl PlayerGetDestCoords mov r0, sp ldrh r2, [r0] movs r3, 0 ldrsh r1, [r0, r3] movs r3, 0x4 ldrsh r0, [r5, r3] cmp r1, r0 bne _08069E4A movs r0, 0 ldrsh r1, [r7, r0] movs r3, 0x6 ldrsh r0, [r5, r3] cmp r1, r0 bne _08069E4A b _08069F56 _08069E4A: strh r2, [r5, 0x4] ldrh r0, [r7] strh r0, [r5, 0x6] mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r7, r2] bl MapGridGetMetatileBehaviorAt adds r4, r0, 0 lsls r4, 16 lsrs r4, 16 ldr r0, _08069E8C @ =0x00004022 bl GetVarPointer adds r6, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl MetatileBehavior_IsThinIce lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08069E90 ldrh r0, [r6] adds r0, 0x1 strh r0, [r6] movs r0, 0x4 strh r0, [r5, 0xC] movs r0, 0x2 b _08069EA8 .align 2, 0 _08069E8C: .4byte 0x00004022 _08069E90: adds r0, r4, 0 bl MetatileBehavior_IsCrackedIce lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _08069F56 movs r0, 0 strh r0, [r6] movs r0, 0x4 strh r0, [r5, 0xC] movs r0, 0x3 _08069EA8: strh r0, [r5, 0x2] mov r0, sp ldrh r0, [r0] strh r0, [r5, 0x8] ldrh r0, [r7] strh r0, [r5, 0xA] b _08069F56 _08069EB6: ldrh r1, [r5, 0xC] movs r3, 0xC ldrsh r0, [r5, r3] cmp r0, 0 bne _08069F1A mov r1, sp ldrh r0, [r5, 0x8] strh r0, [r1] mov r4, sp adds r4, 0x2 ldrh r0, [r5, 0xA] strh r0, [r4] movs r0, 0x2A bl PlaySE mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] ldr r2, _08069F0C @ =0x0000020e bl MapGridSetMetatileIdAt mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] bl CurrentMapDrawMetatileAt mov r0, sp ldrh r0, [r0] subs r0, 0x7 lsls r0, 16 asrs r0, 16 ldrh r1, [r4] subs r1, 0x7 lsls r1, 16 asrs r1, 16 bl sub_8069CFC b _08069F52 .align 2, 0 _08069F0C: .4byte 0x0000020e _08069F10: ldrh r1, [r5, 0xC] movs r3, 0xC ldrsh r0, [r5, r3] cmp r0, 0 beq _08069F20 _08069F1A: subs r0, r1, 0x1 strh r0, [r5, 0xC] b _08069F56 _08069F20: mov r1, sp ldrh r0, [r5, 0x8] strh r0, [r1] mov r4, sp adds r4, 0x2 ldrh r0, [r5, 0xA] strh r0, [r4] movs r0, 0x29 bl PlaySE mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] ldr r2, _08069F60 @ =0x00000206 bl MapGridSetMetatileIdAt mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] bl CurrentMapDrawMetatileAt _08069F52: movs r0, 0x1 strh r0, [r5, 0x2] _08069F56: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08069F60: .4byte 0x00000206 thumb_func_end PerStepCallback_8069DD4 thumb_func_start PerStepCallback_8069F64 PerStepCallback_8069F64: @ 8069F64 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _08069FE8 @ =gTasks + 0x8 adds r5, r1, r0 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl PlayerGetDestCoords mov r0, sp ldrh r2, [r0] movs r3, 0 ldrsh r1, [r0, r3] movs r3, 0x2 ldrsh r0, [r5, r3] cmp r1, r0 bne _08069F9E movs r0, 0 ldrsh r1, [r4, r0] movs r3, 0x4 ldrsh r0, [r5, r3] cmp r1, r0 beq _0806A02A _08069F9E: strh r2, [r5, 0x2] ldrh r0, [r4] strh r0, [r5, 0x4] mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 bl MetatileBehavior_IsAshGrass lsls r0, 24 cmp r0, 0 beq _0806A02A mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] bl MapGridGetMetatileIdAt ldr r1, _08069FEC @ =0x0000020a cmp r0, r1 bne _08069FF4 mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] ldr r2, _08069FF0 @ =0x00000212 movs r3, 0x4 bl ash b _0806A006 .align 2, 0 _08069FE8: .4byte gTasks + 0x8 _08069FEC: .4byte 0x0000020a _08069FF0: .4byte 0x00000212 _08069FF4: mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] ldr r2, _0806A034 @ =0x00000206 movs r3, 0x4 bl ash _0806A006: movs r0, 0x87 lsls r0, 1 movs r1, 0x1 bl CheckBagHasItem lsls r0, 24 cmp r0, 0 beq _0806A02A ldr r0, _0806A038 @ =0x00004048 bl GetVarPointer adds r2, r0, 0 ldrh r1, [r2] ldr r0, _0806A03C @ =0x0000270e cmp r1, r0 bhi _0806A02A adds r0, r1, 0x1 strh r0, [r2] _0806A02A: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806A034: .4byte 0x00000206 _0806A038: .4byte 0x00004048 _0806A03C: .4byte 0x0000270e thumb_func_end PerStepCallback_8069F64 thumb_func_start sub_806A040 sub_806A040: @ 806A040 push {r4,r5,lr} lsls r0, 16 asrs r5, r0, 16 lsls r1, 16 asrs r4, r1, 16 adds r0, r5, 0 adds r1, r4, 0 bl MapGridGetMetatileIdAt ldr r1, _0806A074 @ =0x0000022f ldr r2, _0806A078 @ =0x00000237 cmp r0, r1 bne _0806A05C subs r2, 0x31 _0806A05C: adds r0, r5, 0 adds r1, r4, 0 bl MapGridSetMetatileIdAt adds r0, r5, 0 adds r1, r4, 0 bl CurrentMapDrawMetatileAt pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806A074: .4byte 0x0000022f _0806A078: .4byte 0x00000237 thumb_func_end sub_806A040 thumb_func_start PerStepCallback_806A07C PerStepCallback_806A07C: @ 806A07C push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _0806A164 @ =gTasks + 0x8 adds r5, r1, r0 mov r4, sp adds r4, 0x2 mov r0, sp adds r1, r4, 0 bl PlayerGetDestCoords mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r4, r2] bl MapGridGetMetatileBehaviorAt lsls r0, 16 lsrs r6, r0, 16 ldrh r1, [r5, 0x8] movs r3, 0x8 ldrsh r0, [r5, r3] adds r7, r4, 0 cmp r0, 0 beq _0806A0CE subs r0, r1, 0x1 strh r0, [r5, 0x8] lsls r0, 16 cmp r0, 0 bne _0806A0CE movs r1, 0xA ldrsh r0, [r5, r1] movs r2, 0xC ldrsh r1, [r5, r2] bl sub_806A040 _0806A0CE: ldrh r1, [r5, 0xE] movs r3, 0xE ldrsh r0, [r5, r3] cmp r0, 0 beq _0806A0EE subs r0, r1, 0x1 strh r0, [r5, 0xE] lsls r0, 16 cmp r0, 0 bne _0806A0EE movs r1, 0x10 ldrsh r0, [r5, r1] movs r2, 0x12 ldrsh r1, [r5, r2] bl sub_806A040 _0806A0EE: lsls r0, r6, 24 lsrs r6, r0, 24 adds r0, r6, 0 bl MetatileBehavior_IsCrackedFloorHole lsls r0, 24 cmp r0, 0 beq _0806A106 ldr r0, _0806A168 @ =0x00004022 movs r1, 0 bl VarSet _0806A106: mov r0, sp ldrh r2, [r0] movs r3, 0 ldrsh r1, [r0, r3] movs r3, 0x4 ldrsh r0, [r5, r3] cmp r1, r0 bne _0806A122 movs r0, 0 ldrsh r1, [r7, r0] movs r3, 0x6 ldrsh r0, [r5, r3] cmp r1, r0 beq _0806A182 _0806A122: strh r2, [r5, 0x4] adds r4, r7, 0 ldrh r0, [r4] strh r0, [r5, 0x6] adds r0, r6, 0 bl MetatileBehavior_IsCrackedFloor lsls r0, 24 cmp r0, 0 beq _0806A182 bl GetPlayerSpeed lsls r0, 16 asrs r0, 16 cmp r0, 0x4 beq _0806A14A ldr r0, _0806A168 @ =0x00004022 movs r1, 0 bl VarSet _0806A14A: movs r1, 0x8 ldrsh r0, [r5, r1] cmp r0, 0 bne _0806A16C movs r0, 0x3 strh r0, [r5, 0x8] mov r0, sp ldrh r0, [r0] strh r0, [r5, 0xA] ldrh r0, [r4] strh r0, [r5, 0xC] b _0806A182 .align 2, 0 _0806A164: .4byte gTasks + 0x8 _0806A168: .4byte 0x00004022 _0806A16C: movs r2, 0xE ldrsh r0, [r5, r2] cmp r0, 0 bne _0806A182 movs r0, 0x3 strh r0, [r5, 0xE] mov r0, sp ldrh r0, [r0] strh r0, [r5, 0x10] ldrh r0, [r7] strh r0, [r5, 0x12] _0806A182: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 thumb_func_end PerStepCallback_806A07C thumb_func_start sub_806A18C sub_806A18C: @ 806A18C push {r4,r5,lr} adds r3, r0, 0 lsls r1, 16 lsrs r5, r1, 16 lsls r2, 16 lsrs r4, r2, 16 ldrh r0, [r3] subs r0, 0x1 strh r0, [r3] lsls r0, 16 cmp r0, 0 bne _0806A1A8 movs r2, 0xE8 b _0806A1BC _0806A1A8: ldr r1, _0806A1E4 @ =gUnknown_08376418 movs r2, 0 ldrsh r0, [r3, r2] cmp r0, 0 bge _0806A1B4 adds r0, 0x7 _0806A1B4: asrs r0, 3 lsls r0, 1 adds r0, r1 ldrh r2, [r0] _0806A1BC: lsls r5, 16 asrs r5, 16 lsls r4, 16 asrs r4, 16 adds r0, r5, 0 adds r1, r4, 0 bl MapGridSetMetatileIdAt adds r0, r5, 0 adds r1, r4, 0 bl CurrentMapDrawMetatileAt adds r0, r5, 0 adds r1, r4, 0 movs r2, 0xE8 bl MapGridSetMetatileIdAt pop {r4,r5} pop {r0} bx r0 .align 2, 0 _0806A1E4: .4byte gUnknown_08376418 thumb_func_end sub_806A18C thumb_func_start Task_MuddySlope Task_MuddySlope: @ 806A1E8 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, _0806A230 @ =gTasks + 0x8 adds r4, r1, r0 mov r5, sp adds r5, 0x2 mov r0, sp adds r1, r5, 0 bl PlayerGetDestCoords ldr r0, _0806A234 @ =gSaveBlock1 movs r1, 0x4 ldrsb r1, [r0, r1] lsls r1, 8 ldrb r0, [r0, 0x5] lsls r0, 24 asrs r0, 24 orrs r0, r1 lsls r0, 16 lsrs r7, r0, 16 movs r0, 0x2 ldrsh r1, [r4, r0] mov r8, r5 cmp r1, 0 beq _0806A238 cmp r1, 0x1 beq _0806A264 b _0806A2B8 .align 2, 0 _0806A230: .4byte gTasks + 0x8 _0806A234: .4byte gSaveBlock1 _0806A238: strh r7, [r4] mov r0, sp ldrh r0, [r0] strh r0, [r4, 0x4] ldrh r0, [r5] strh r0, [r4, 0x6] movs r0, 0x1 strh r0, [r4, 0x2] strh r1, [r4, 0x8] strh r1, [r4, 0xE] strh r1, [r4, 0x14] strh r1, [r4, 0x1A] b _0806A2B8 _0806A252: movs r0, 0x20 strh r0, [r1] mov r0, sp ldrh r0, [r0] strh r0, [r1, 0x2] mov r2, r8 ldrh r0, [r2] strh r0, [r1, 0x4] b _0806A2B8 _0806A264: mov r0, sp movs r3, 0x4 ldrsh r1, [r4, r3] ldrh r2, [r0] movs r3, 0 ldrsh r0, [r0, r3] cmp r1, r0 bne _0806A280 movs r0, 0x6 ldrsh r1, [r4, r0] movs r3, 0 ldrsh r0, [r5, r3] cmp r1, r0 beq _0806A2B8 _0806A280: strh r2, [r4, 0x4] ldrh r0, [r5] strh r0, [r4, 0x6] mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r5, r2] bl MapGridGetMetatileBehaviorAt lsls r0, 24 lsrs r0, 24 bl MetatileBehavior_IsMuddySlope lsls r0, 24 cmp r0, 0 beq _0806A2B8 movs r6, 0x4 adds r1, r4, 0 adds r1, 0x8 _0806A2A8: movs r3, 0 ldrsh r0, [r1, r3] cmp r0, 0 beq _0806A252 adds r1, 0x6 adds r6, 0x3 cmp r6, 0xD ble _0806A2A8 _0806A2B8: ldr r2, _0806A2D4 @ =gUnknown_0202E844 ldrb r1, [r2] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0806A2D8 movs r1, 0 ldrsh r0, [r4, r1] cmp r7, r0 beq _0806A2D8 strh r7, [r4] ldrh r0, [r2, 0x4] ldrh r1, [r2, 0x8] b _0806A2DC .align 2, 0 _0806A2D4: .4byte gUnknown_0202E844 _0806A2D8: movs r0, 0 movs r1, 0 _0806A2DC: lsls r0, 16 asrs r0, 16 mov r8, r0 lsls r0, r1, 16 asrs r7, r0, 16 adds r5, r4, 0 adds r5, 0x8 adds r4, r5, 0 movs r6, 0x9 _0806A2EE: movs r2, 0 ldrsh r0, [r4, r2] cmp r0, 0 beq _0806A312 ldrh r0, [r4, 0x2] mov r3, r8 subs r0, r3 strh r0, [r4, 0x2] ldrh r0, [r4, 0x4] subs r0, r7 strh r0, [r4, 0x4] movs r0, 0x2 ldrsh r1, [r4, r0] movs r3, 0x4 ldrsh r2, [r4, r3] adds r0, r5, 0 bl sub_806A18C _0806A312: adds r4, 0x6 adds r5, 0x6 subs r6, 0x3 cmp r6, 0 bge _0806A2EE add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end Task_MuddySlope .align 2, 0 @ Don't pad with nop.