.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start task_per_step_callback_manager task_per_step_callback_manager: @ 809D88C push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r2, 0x8 ldrsh r1, [r1, r2] ldr r2, =gUnknown_08510348 lsls r1, 2 adds r1, r2 ldr r1, [r1] bl _call_via_r1 pop {r0} bx r0 .pool thumb_func_end task_per_step_callback_manager thumb_func_start sub_809D8B8 sub_809D8B8: @ 809D8B8 push {r4,lr} adds r4, r0, 0 movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0 beq _0809D8CA cmp r0, 0x1 beq _0809D8E8 b _0809D8FC _0809D8CA: ldr r0, =gMain ldr r0, [r0, 0x20] movs r1, 0x80 lsls r1, 5 ands r0, r1 cmp r0, 0 beq _0809D8FC bl DoTimeBasedEvents ldrh r0, [r4] adds r0, 0x1 b _0809D8FA .pool _0809D8E8: ldr r0, =gMain ldr r0, [r0, 0x20] movs r1, 0x80 lsls r1, 5 ands r0, r1 cmp r0, 0 bne _0809D8FC ldrh r0, [r4] subs r0, 0x1 _0809D8FA: strh r0, [r4] _0809D8FC: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_809D8B8 thumb_func_start sub_809D908 sub_809D908: @ 809D908 push {r4,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r0, =gTasks + 0x8 adds r4, r1, r0 bl ScriptContext2_IsEnabled lsls r0, 24 cmp r0, 0 bne _0809D930 adds r0, r4, 0 bl sub_809D8B8 adds r0, r4, 0x2 adds r1, r4, 0x4 bl wild_encounter_related _0809D930: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_809D908 thumb_func_start overworld_ensure_per_step_coros_running overworld_ensure_per_step_coros_running: @ 809D93C push {r4,r5,lr} ldr r5, =task_per_step_callback_manager adds r0, r5, 0 bl FuncIsActiveTask lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0 bne _0809D966 adds r0, r5, 0 movs r1, 0x50 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 strh r4, [r1, 0x8] _0809D966: ldr r4, =sub_809E638 adds r0, r4, 0 bl FuncIsActiveTask lsls r0, 24 cmp r0, 0 bne _0809D97C adds r0, r4, 0 movs r1, 0x50 bl CreateTask _0809D97C: ldr r4, =sub_809D908 adds r0, r4, 0 bl FuncIsActiveTask lsls r0, 24 cmp r0, 0 bne _0809D992 adds r0, r4, 0 movs r1, 0x50 bl CreateTask _0809D992: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end overworld_ensure_per_step_coros_running thumb_func_start ActivatePerStepCallback ActivatePerStepCallback: @ 809D9A8 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, =task_per_step_callback_manager bl FindTaskIdByFunc lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0xFF beq _0809D9EA lsls r0, r1, 2 adds r0, r1 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r1, r0, r1 movs r2, 0 adds r0, r1, 0 adds r0, 0x1E _0809D9CC: strh r2, [r0] subs r0, 0x2 cmp r0, r1 bge _0809D9CC cmp r4, 0x7 bls _0809D9E8 movs r0, 0 strh r0, [r1] b _0809D9EA .pool _0809D9E8: strh r4, [r1] _0809D9EA: pop {r4} pop {r0} bx r0 thumb_func_end ActivatePerStepCallback thumb_func_start wild_encounter_reset_coro_args wild_encounter_reset_coro_args: @ 809D9F0 push {lr} ldr r0, =task_per_step_callback_manager bl FindTaskIdByFunc lsls r0, 24 lsrs r1, r0, 24 ldr r0, =sub_809D908 bl FindTaskIdByFunc lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0xFF beq _0809DA1A lsls r0, r1, 2 adds r0, r1 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r0, r1 movs r1, 0 strh r1, [r0, 0x2] strh r1, [r0, 0x4] _0809DA1A: pop {r0} bx r0 .pool thumb_func_end wild_encounter_reset_coro_args thumb_func_start nullsub_34 nullsub_34: @ 809DA2C bx lr thumb_func_end nullsub_34 thumb_func_start sub_809DA30 sub_809DA30: @ 809DA30 push {r4,r5,lr} adds r5, r0, 0 lsls r1, 24 lsrs r4, r1, 24 adds r0, r4, 0 bl MetatileBehavior_IsPacifilogVerticalLog1 lsls r0, 24 cmp r0, 0 beq _0809DA48 adds r0, r5, 0 b _0809DA80 _0809DA48: adds r0, r4, 0 bl MetatileBehavior_IsPacifilogVerticalLog2 lsls r0, 24 cmp r0, 0 beq _0809DA5A adds r0, r5, 0 adds r0, 0x8 b _0809DA80 _0809DA5A: adds r0, r4, 0 bl MetatileBehavior_IsPacifilogHorizontalLog1 lsls r0, 24 cmp r0, 0 beq _0809DA6C adds r0, r5, 0 adds r0, 0x10 b _0809DA80 _0809DA6C: adds r0, r4, 0 bl MetatileBehavior_IsPacifilogHorizontalLog2 lsls r0, 24 cmp r0, 0 bne _0809DA7C movs r0, 0 b _0809DA80 _0809DA7C: adds r0, r5, 0 adds r0, 0x18 _0809DA80: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_809DA30 thumb_func_start sub_809DA88 sub_809DA88: @ 809DA88 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_809DA30 adds r4, r0, 0 adds r5, r4, 0 cmp r4, 0 beq _0809DB06 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 _0809DADE movs r0, 0 ldrsb r0, [r4, r0] adds r0, r6, r0 movs r1, 0x1 ldrsb r1, [r4, r1] adds r1, r7, r1 bl CurrentMapDrawMetatileAt _0809DADE: 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 _0809DB06 movs r0, 0x4 ldrsb r0, [r5, r0] adds r0, r6, r0 movs r1, 0x5 ldrsb r1, [r5, r1] adds r1, r7, r1 bl CurrentMapDrawMetatileAt _0809DB06: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_809DA88 thumb_func_start sub_809DB10 sub_809DB10: @ 809DB10 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 adds r3, r2, 0 ldr r0, =gUnknown_08510368 lsls r4, 16 asrs r4, 16 lsls r5, 16 asrs r5, 16 adds r1, r4, 0 adds r2, r5, 0 bl sub_809DA88 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_809DB10 thumb_func_start sub_809DB34 sub_809DB34: @ 809DB34 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 adds r3, r2, 0 ldr r0, =gUnknown_08510388 lsls r4, 16 asrs r4, 16 lsls r5, 16 asrs r5, 16 adds r1, r4, 0 adds r2, r5, 0 bl sub_809DA88 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_809DB34 thumb_func_start sub_809DB58 sub_809DB58: @ 809DB58 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 adds r3, r2, 0 ldr r0, =gUnknown_085103A8 lsls r4, 16 asrs r4, 16 lsls r5, 16 asrs r5, 16 adds r1, r4, 0 adds r2, r5, 0 bl sub_809DA88 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_809DB58 thumb_func_start sub_809DB7C sub_809DB7C: @ 809DB7C 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 MetatileBehavior_IsPacifilogVerticalLog1 lsls r0, 24 cmp r0, 0 beq _0809DBC0 lsls r0, r7, 16 asrs r0, 16 cmp r0, r5 ble _0809DC06 _0809DBBC: movs r0, 0 b _0809DC08 _0809DBC0: adds r0, r4, 0 bl MetatileBehavior_IsPacifilogVerticalLog2 lsls r0, 24 cmp r0, 0 beq _0809DBD8 mov r1, r9 lsls r0, r1, 16 asrs r0, 16 cmp r0, r5 bge _0809DC06 b _0809DBBC _0809DBD8: adds r0, r4, 0 bl MetatileBehavior_IsPacifilogHorizontalLog1 lsls r0, 24 cmp r0, 0 beq _0809DBF0 mov r1, r8 lsls r0, r1, 16 asrs r0, 16 cmp r0, r6 ble _0809DC06 b _0809DBBC _0809DBF0: adds r0, r4, 0 bl MetatileBehavior_IsPacifilogHorizontalLog2 lsls r0, 24 cmp r0, 0 beq _0809DC06 mov r1, r10 lsls r0, r1, 16 asrs r0, 16 cmp r0, r6 blt _0809DBBC _0809DC06: movs r0, 0x1 _0809DC08: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_809DB7C thumb_func_start sub_809DC18 sub_809DC18: @ 809DC18 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 MetatileBehavior_IsPacifilogVerticalLog1 lsls r0, 24 cmp r0, 0 beq _0809DC5C lsls r0, r7, 16 asrs r0, 16 cmp r5, r0 bge _0809DCA2 _0809DC58: movs r0, 0 b _0809DCA4 _0809DC5C: adds r0, r4, 0 bl MetatileBehavior_IsPacifilogVerticalLog2 lsls r0, 24 cmp r0, 0 beq _0809DC74 mov r1, r9 lsls r0, r1, 16 asrs r0, 16 cmp r5, r0 ble _0809DCA2 b _0809DC58 _0809DC74: adds r0, r4, 0 bl MetatileBehavior_IsPacifilogHorizontalLog1 lsls r0, 24 cmp r0, 0 beq _0809DC8C mov r1, r8 lsls r0, r1, 16 asrs r0, 16 cmp r6, r0 bge _0809DCA2 b _0809DC58 _0809DC8C: adds r0, r4, 0 bl MetatileBehavior_IsPacifilogHorizontalLog2 lsls r0, 24 cmp r0, 0 beq _0809DCA2 mov r1, r10 lsls r0, r1, 16 asrs r0, 16 cmp r6, r0 bgt _0809DC58 _0809DCA2: movs r0, 0x1 _0809DCA4: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_809DC18 thumb_func_start sub_809DCB4 sub_809DCB4: @ 809DCB4 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, =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 _0809DD0E cmp r0, 0x1 bgt _0809DCEC cmp r0, 0 beq _0809DCF2 b _0809DE1E .pool _0809DCEC: cmp r0, 0x2 beq _0809DDDC b _0809DE1E _0809DCF2: 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_809DB34 b _0809DE1A _0809DD0E: mov r0, sp movs r7, 0 ldrsh r1, [r0, r7] movs r2, 0x4 ldrsh r0, [r4, r2] cmp r1, r0 bne _0809DD28 movs r3, 0 ldrsh r1, [r5, r3] movs r7, 0x6 ldrsh r0, [r4, r7] cmp r1, r0 beq _0809DE1E _0809DD28: 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_809DB7C cmp r0, 0 beq _0809DD70 movs r7, 0x4 ldrsh r0, [r4, r7] movs r2, 0x6 ldrsh r1, [r4, r2] movs r2, 0x1 bl sub_809DB10 movs r3, 0x4 ldrsh r0, [r4, r3] movs r5, 0x6 ldrsh r1, [r4, r5] movs r2, 0 bl sub_809DB58 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 _0809DD7A _0809DD70: movs r7, 0x1 negs r7, r7 adds r0, r7, 0 strh r0, [r4, 0x8] strh r0, [r4, 0xA] _0809DD7A: 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_809DC18 cmp r0, 0 beq _0809DDAE mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] movs r2, 0 ldrsh r1, [r5, r2] movs r2, 0x1 bl sub_809DB10 movs r0, 0x2 strh r0, [r4, 0x2] movs r0, 0x8 strh r0, [r4, 0xC] _0809DDAE: 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 _0809DE1E movs r0, 0x46 bl PlaySE b _0809DE1E _0809DDDC: ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 bne _0809DE1E mov r0, sp movs r7, 0 ldrsh r0, [r0, r7] movs r2, 0 ldrsh r1, [r5, r2] movs r2, 0x1 bl sub_809DB34 movs r3, 0x8 ldrsh r0, [r4, r3] movs r1, 0x1 negs r1, r1 cmp r0, r1 beq _0809DE1A movs r5, 0xA ldrsh r0, [r4, r5] cmp r0, r1 beq _0809DE1A movs r7, 0x8 ldrsh r0, [r4, r7] movs r2, 0xA ldrsh r1, [r4, r2] movs r2, 0x1 bl sub_809DB58 _0809DE1A: movs r0, 0x1 strh r0, [r4, 0x2] _0809DE1E: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_809DCB4 thumb_func_start sub_809DE28 sub_809DE28: @ 809DE28 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 _0809DE82 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, =0x0000024e cmp r1, r0 beq _0809DE68 adds r0, 0x8 cmp r1, r0 beq _0809DE78 b _0809DE82 .pool _0809DE68: ldr r2, =0x0000024f adds r0, r4, 0 adds r1, r5, 0 bl MapGridSetMetatileIdAt b _0809DE82 .pool _0809DE78: ldr r2, =0x00000257 adds r0, r4, 0 adds r1, r5, 0 bl MapGridSetMetatileIdAt _0809DE82: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_809DE28 thumb_func_start sub_809DE8C sub_809DE8C: @ 809DE8C 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 _0809DEE6 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, =0x0000024f cmp r1, r0 beq _0809DECC adds r0, 0x8 cmp r1, r0 beq _0809DEDC b _0809DEE6 .pool _0809DECC: ldr r2, =0x0000024e adds r0, r4, 0 adds r1, r5, 0 bl MapGridSetMetatileIdAt b _0809DEE6 .pool _0809DEDC: ldr r2, =0x00000256 adds r0, r4, 0 adds r1, r5, 0 bl MapGridSetMetatileIdAt _0809DEE6: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_809DE8C thumb_func_start sub_809DEF0 sub_809DEF0: @ 809DEF0 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, =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 _0809DF84 cmp r5, 0x1 bgt _0809DF30 cmp r5, 0 beq _0809DF38 b _0809E0F6 .pool _0809DF30: cmp r5, 0x2 bne _0809DF36 b _0809E064 _0809DF36: b _0809E0F6 _0809DF38: 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 _0809DF62 b _0809E0F2 _0809DF62: mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] mov r2, r9 movs r3, 0 ldrsh r1, [r2, r3] bl sub_809DE28 mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] mov r2, r9 movs r3, 0 ldrsh r1, [r2, r3] bl CurrentMapDrawMetatileAt b _0809E0F2 _0809DF84: 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 _0809DFAC mov r0, r9 movs r2, 0 ldrsh r1, [r0, r2] mov r3, r8 lsls r0, r3, 16 asrs r0, 16 cmp r1, r0 bne _0809DFAC b _0809E0F6 _0809DFAC: 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 _0809DFF4 movs r1, 0x1 _0809DFF4: cmp r1, 0 beq _0809E008 ldr r1, [sp, 0x4] cmp r1, 0x1 beq _0809E002 cmp r7, 0x1 bne _0809E008 _0809E002: movs r0, 0x47 bl PlaySE _0809E008: cmp r7, 0 beq _0809E044 mov r2, r10 lsls r4, r2, 16 asrs r4, 16 asrs r5, 16 adds r0, r4, 0 adds r1, r5, 0 bl sub_809DE8C 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_809DE28 mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] mov r2, r9 movs r3, 0 ldrsh r1, [r2, r3] bl CurrentMapDrawMetatileAt _0809E044: 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 _0809E0F6 movs r0, 0x10 strh r0, [r6, 0xC] movs r0, 0x2 strh r0, [r6, 0x2] _0809E064: 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 _0809E0EA lsls r0, 2 ldr r1, =_0809E094 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0809E094: .4byte _0809E0B4 .4byte _0809E0EA .4byte _0809E0EA .4byte _0809E0EA .4byte _0809E0C6 .4byte _0809E0EA .4byte _0809E0EA .4byte _0809E0EA _0809E0B4: mov r2, r10 lsls r0, r2, 16 asrs r0, 16 mov r3, r8 lsls r1, r3, 16 asrs r1, 16 bl CurrentMapDrawMetatileAt b _0809E0EA _0809E0C6: 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_809DE28 adds r0, r5, 0 adds r1, r4, 0 bl CurrentMapDrawMetatileAt adds r0, r5, 0 adds r1, r4, 0 bl sub_809DE8C _0809E0EA: movs r2, 0xC ldrsh r0, [r6, r2] cmp r0, 0 bne _0809E0F6 _0809E0F2: movs r0, 0x1 strh r0, [r6, 0x2] _0809E0F6: 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 sub_809DEF0 thumb_func_start sub_809E108 sub_809E108: @ 809E108 push {lr} lsls r1, 16 lsrs r1, 16 lsls r0, 16 ldr r2, =0xfffd0000 adds r0, r2 lsrs r0, 16 cmp r0, 0xA bhi _0809E144 lsls r0, r1, 16 asrs r1, r0, 16 ldr r2, =0xfffa0000 adds r0, r2 lsrs r0, 16 cmp r0, 0xD bhi _0809E144 ldr r0, =gUnknown_085103C8 lsls r1, 1 adds r1, r0 ldrh r0, [r1] cmp r0, 0 beq _0809E144 movs r0, 0x1 b _0809E146 .pool _0809E144: movs r0, 0 _0809E146: pop {r1} bx r1 thumb_func_end sub_809E108 thumb_func_start sub_809E14C sub_809E14C: @ 809E14C 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_809E108 cmp r0, 0 beq _0809E17A ldr r1, =gUnknown_085103C8 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] _0809E17A: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_809E14C thumb_func_start sub_809E184 sub_809E184: @ 809E184 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_809E108 cmp r0, 0 beq _0809E1B6 ldr r1, =gUnknown_085103C8 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 _0809E1C0 _0809E1B6: movs r0, 0 b _0809E1C2 .pool _0809E1C0: movs r0, 0x1 _0809E1C2: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_809E184 thumb_func_start sub_809E1C8 sub_809E1C8: @ 809E1C8 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} ldr r0, =gMapHeader ldr r0, [r0] ldr r1, [r0] mov r9, r1 ldr r7, [r0, 0x4] movs r5, 0 cmp r5, r9 bge _0809E210 _0809E1E0: movs r4, 0 adds r0, r5, 0x1 mov r8, r0 cmp r4, r7 bge _0809E20A lsls r6, r5, 16 _0809E1EC: lsls r1, r4, 16 asrs r1, 16 asrs r0, r6, 16 bl sub_809E184 cmp r0, 0x1 bne _0809E204 adds r1, r4, 0x7 adds r0, r5, 0x7 ldr r2, =0x0000020e bl MapGridSetMetatileIdAt _0809E204: adds r4, 0x1 cmp r4, r7 blt _0809E1EC _0809E20A: mov r5, r8 cmp r5, r9 blt _0809E1E0 _0809E210: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_809E1C8 thumb_func_start sub_809E224 sub_809E224: @ 809E224 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, =gTasks + 0x8 adds r5, r1, r0 movs r1, 0x2 ldrsh r0, [r5, r1] cmp r0, 0x1 beq _0809E270 cmp r0, 0x1 bgt _0809E24C cmp r0, 0 beq _0809E258 b _0809E3A6 .pool _0809E24C: cmp r0, 0x2 beq _0809E306 cmp r0, 0x3 bne _0809E256 b _0809E360 _0809E256: b _0809E3A6 _0809E258: 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 _0809E3A2 _0809E270: 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 _0809E29A movs r0, 0 ldrsh r1, [r7, r0] movs r3, 0x6 ldrsh r0, [r5, r3] cmp r1, r0 bne _0809E29A b _0809E3A6 _0809E29A: 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, =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 _0809E2E0 ldrh r0, [r6] adds r0, 0x1 strh r0, [r6] movs r0, 0x4 strh r0, [r5, 0xC] movs r0, 0x2 b _0809E2F8 .pool _0809E2E0: adds r0, r4, 0 bl MetatileBehavior_IsCrackedIce lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 bne _0809E3A6 movs r0, 0 strh r0, [r6] movs r0, 0x4 strh r0, [r5, 0xC] movs r0, 0x3 _0809E2F8: strh r0, [r5, 0x2] mov r0, sp ldrh r0, [r0] strh r0, [r5, 0x8] ldrh r0, [r7] strh r0, [r5, 0xA] b _0809E3A6 _0809E306: ldrh r1, [r5, 0xC] movs r3, 0xC ldrsh r0, [r5, r3] cmp r0, 0 bne _0809E36A 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, =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_809E14C b _0809E3A2 .pool _0809E360: ldrh r1, [r5, 0xC] movs r3, 0xC ldrsh r0, [r5, r3] cmp r0, 0 beq _0809E370 _0809E36A: subs r0, r1, 0x1 strh r0, [r5, 0xC] b _0809E3A6 _0809E370: 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, =0x00000206 bl MapGridSetMetatileIdAt mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] bl CurrentMapDrawMetatileAt _0809E3A2: movs r0, 0x1 strh r0, [r5, 0x2] _0809E3A6: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_809E224 thumb_func_start sub_809E3B4 sub_809E3B4: @ 809E3B4 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, =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 _0809E3EE movs r0, 0 ldrsh r1, [r4, r0] movs r3, 0x4 ldrsh r0, [r5, r3] cmp r1, r0 beq _0809E47A _0809E3EE: 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_IsAsh lsls r0, 24 cmp r0, 0 beq _0809E47A mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] bl MapGridGetMetatileIdAt ldr r1, =0x0000020a cmp r0, r1 bne _0809E444 mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] ldr r2, =0x00000212 movs r3, 0x4 bl ash b _0809E456 .pool _0809E444: mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] movs r2, 0 ldrsh r1, [r4, r2] ldr r2, =0x00000206 movs r3, 0x4 bl ash _0809E456: movs r0, 0x87 lsls r0, 1 movs r1, 0x1 bl CheckBagHasItem lsls r0, 24 cmp r0, 0 beq _0809E47A ldr r0, =0x00004048 bl GetVarPointer adds r2, r0, 0 ldrh r1, [r2] ldr r0, =0x0000270e cmp r1, r0 bhi _0809E47A adds r0, r1, 0x1 strh r0, [r2] _0809E47A: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_809E3B4 thumb_func_start sub_809E490 sub_809E490: @ 809E490 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, =0x0000022f ldr r2, =0x00000237 cmp r0, r1 bne _0809E4AC subs r2, 0x31 _0809E4AC: 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 .pool thumb_func_end sub_809E490 thumb_func_start sub_809E4CC sub_809E4CC: @ 809E4CC 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, =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 _0809E51E subs r0, r1, 0x1 strh r0, [r5, 0x8] lsls r0, 16 cmp r0, 0 bne _0809E51E movs r1, 0xA ldrsh r0, [r5, r1] movs r2, 0xC ldrsh r1, [r5, r2] bl sub_809E490 _0809E51E: ldrh r1, [r5, 0xE] movs r3, 0xE ldrsh r0, [r5, r3] cmp r0, 0 beq _0809E53E subs r0, r1, 0x1 strh r0, [r5, 0xE] lsls r0, 16 cmp r0, 0 bne _0809E53E movs r1, 0x10 ldrsh r0, [r5, r1] movs r2, 0x12 ldrsh r1, [r5, r2] bl sub_809E490 _0809E53E: lsls r0, r6, 24 lsrs r6, r0, 24 adds r0, r6, 0 bl MetatileBehavior_IsCrackedFloorHole lsls r0, 24 cmp r0, 0 beq _0809E556 ldr r0, =0x00004022 movs r1, 0 bl VarSet _0809E556: mov r0, sp ldrh r2, [r0] movs r3, 0 ldrsh r1, [r0, r3] movs r3, 0x4 ldrsh r0, [r5, r3] cmp r1, r0 bne _0809E572 movs r0, 0 ldrsh r1, [r7, r0] movs r3, 0x6 ldrsh r0, [r5, r3] cmp r1, r0 beq _0809E5D2 _0809E572: 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 _0809E5D2 bl sub_811A138 lsls r0, 16 asrs r0, 16 cmp r0, 0x4 beq _0809E59A ldr r0, =0x00004022 movs r1, 0 bl VarSet _0809E59A: movs r1, 0x8 ldrsh r0, [r5, r1] cmp r0, 0 bne _0809E5BC 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 _0809E5D2 .pool _0809E5BC: movs r2, 0xE ldrsh r0, [r5, r2] cmp r0, 0 bne _0809E5D2 movs r0, 0x3 strh r0, [r5, 0xE] mov r0, sp ldrh r0, [r0] strh r0, [r5, 0x10] ldrh r0, [r7] strh r0, [r5, 0x12] _0809E5D2: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_809E4CC thumb_func_start sub_809E5DC sub_809E5DC: @ 809E5DC 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 _0809E5F8 movs r2, 0xE8 b _0809E60C _0809E5F8: ldr r1, =gUnknown_085103FC movs r2, 0 ldrsh r0, [r3, r2] cmp r0, 0 bge _0809E604 adds r0, 0x7 _0809E604: asrs r0, 3 lsls r0, 1 adds r0, r1 ldrh r2, [r0] _0809E60C: 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 .pool thumb_func_end sub_809E5DC thumb_func_start sub_809E638 sub_809E638: @ 809E638 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, =gTasks + 0x8 adds r4, r1, r0 mov r5, sp adds r5, 0x2 mov r0, sp adds r1, r5, 0 bl PlayerGetDestCoords ldr r0, =gSaveBlock1Ptr ldr r0, [r0] 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 _0809E688 cmp r1, 0x1 beq _0809E6B4 b _0809E708 .pool _0809E688: 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 _0809E708 _0809E6A2: 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 _0809E708 _0809E6B4: mov r0, sp movs r3, 0x4 ldrsh r1, [r4, r3] ldrh r2, [r0] movs r3, 0 ldrsh r0, [r0, r3] cmp r1, r0 bne _0809E6D0 movs r0, 0x6 ldrsh r1, [r4, r0] movs r3, 0 ldrsh r0, [r5, r3] cmp r1, r0 beq _0809E708 _0809E6D0: 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 _0809E708 movs r6, 0x4 adds r1, r4, 0 adds r1, 0x8 _0809E6F8: movs r3, 0 ldrsh r0, [r1, r3] cmp r0, 0 beq _0809E6A2 adds r1, 0x6 adds r6, 0x3 cmp r6, 0xD ble _0809E6F8 _0809E708: ldr r2, =gCamera ldrb r1, [r2] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0809E728 movs r1, 0 ldrsh r0, [r4, r1] cmp r7, r0 beq _0809E728 strh r7, [r4] ldrh r0, [r2, 0x4] ldrh r1, [r2, 0x8] b _0809E72C .pool _0809E728: movs r0, 0 movs r1, 0 _0809E72C: 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 _0809E73E: movs r2, 0 ldrsh r0, [r4, r2] cmp r0, 0 beq _0809E762 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_809E5DC _0809E762: adds r4, 0x6 adds r5, 0x6 subs r6, 0x3 cmp r6, 0 bge _0809E73E add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_809E638 .align 2, 0 @ Don't pad with nop.