diff options
Diffstat (limited to 'asm/event_object_movement.s')
-rw-r--r-- | asm/event_object_movement.s | 22062 |
1 files changed, 22062 insertions, 0 deletions
diff --git a/asm/event_object_movement.s b/asm/event_object_movement.s new file mode 100644 index 000000000..f380b4b53 --- /dev/null +++ b/asm/event_object_movement.s @@ -0,0 +1,22062 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start npc_clear_ids_and_state +npc_clear_ids_and_state: @ 805DE2C + push {r4,lr} + adds r4, r0, 0 + movs r1, 0 + movs r2, 0x24 + bl memset + movs r0, 0xFF + strb r0, [r4, 0x8] + movs r0, 0x1 + negs r0, r0 + strb r0, [r4, 0x9] + strb r0, [r4, 0xA] + strb r0, [r4, 0x1C] + pop {r4} + pop {r0} + bx r0 + thumb_func_end npc_clear_ids_and_state + + thumb_func_start npcs_clear_ids_and_state +npcs_clear_ids_and_state: @ 805DE4C + push {r4,r5,lr} + movs r4, 0 + ldr r5, _0805DE70 @ =gObjectEvents +_0805DE52: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + adds r0, r5 + bl npc_clear_ids_and_state + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0805DE52 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805DE70: .4byte gObjectEvents + thumb_func_end npcs_clear_ids_and_state + + thumb_func_start sub_805DE74 +sub_805DE74: @ 805DE74 + push {lr} + bl strange_npc_table_clear + bl npcs_clear_ids_and_state + bl ClearPlayerAvatarInfo + bl sub_805DE8C + pop {r0} + bx r0 + thumb_func_end sub_805DE74 + + thumb_func_start sub_805DE8C +sub_805DE8C: @ 805DE8C + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + ldr r0, _0805DF28 @ =gUnknown_83A0010 + ldr r0, [r0, 0x54] + mov r9, r0 + movs r1, 0 + movs r2, 0 + movs r3, 0x1F + bl CreateSpriteAtEnd + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0805DF2C @ =gSprites + mov r10, r1 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + add r4, r10 + ldrb r1, [r4, 0x1] + movs r5, 0x4 + negs r5, r5 + adds r0, r5, 0 + ands r0, r1 + movs r1, 0x1 + mov r8, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r0, r4, 0 + bl InitSpriteAffineAnim + adds r0, r4, 0 + movs r1, 0 + bl StartSpriteAffineAnim + adds r4, 0x3E + ldrb r0, [r4] + movs r6, 0x4 + orrs r0, r6 + strb r0, [r4] + mov r0, r9 + movs r1, 0 + movs r2, 0 + movs r3, 0x1F + bl CreateSpriteAtEnd + lsls r0, 24 + lsrs r0, 24 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + add r4, r10 + ldrb r0, [r4, 0x1] + ands r5, r0 + mov r0, r8 + orrs r5, r0 + strb r5, [r4, 0x1] + adds r0, r4, 0 + bl InitSpriteAffineAnim + adds r0, r4, 0 + movs r1, 0x1 + bl StartSpriteAffineAnim + adds r4, 0x3E + ldrb r0, [r4] + orrs r0, r6 + strb r0, [r4] + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805DF28: .4byte gUnknown_83A0010 +_0805DF2C: .4byte gSprites + thumb_func_end sub_805DE8C + + thumb_func_start sub_805DF30 +sub_805DF30: @ 805DF30 + push {lr} + movs r1, 0 + ldr r2, _0805DF3C @ =gObjectEvents + ldrb r0, [r2] + b _0805DF54 + .align 2, 0 +_0805DF3C: .4byte gObjectEvents +_0805DF40: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bhi _0805DF5A + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] +_0805DF54: + lsls r0, 31 + cmp r0, 0 + bne _0805DF40 +_0805DF5A: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_805DF30 + + thumb_func_start GetObjectEventIdByLocalIdAndMap +GetObjectEventIdByLocalIdAndMap: @ 805DF60 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + cmp r0, 0xFE + bls _0805DF78 + bl GetObjectEventIdByLocalId + b _0805DF7C +_0805DF78: + bl GetObjectEventIdByLocalIdAndMapInternal +_0805DF7C: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end GetObjectEventIdByLocalIdAndMap + + thumb_func_start TryGetObjectEventIdByLocalIdAndMap +TryGetObjectEventIdByLocalIdAndMap: @ 805DF84 + push {r4,lr} + adds r4, r3, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + bl GetObjectEventIdByLocalIdAndMap + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _0805DFA6 + movs r0, 0 + b _0805DFA8 +_0805DFA6: + movs r0, 0x1 +_0805DFA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end TryGetObjectEventIdByLocalIdAndMap + + thumb_func_start GetObjectEventIdByXY +GetObjectEventIdByXY: @ 805DFB0 + push {r4-r6,lr} + movs r3, 0 + ldr r5, _0805DFF0 @ =gObjectEvents + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r1, 16 +_0805DFBE: + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r5 + ldrb r0, [r2] + lsls r0, 31 + cmp r0, 0 + beq _0805DFDE + movs r6, 0x10 + ldrsh r0, [r2, r6] + cmp r0, r4 + bne _0805DFDE + movs r6, 0x12 + ldrsh r0, [r2, r6] + cmp r0, r1 + beq _0805DFE8 +_0805DFDE: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _0805DFBE +_0805DFE8: + adds r0, r3, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805DFF0: .4byte gObjectEvents + thumb_func_end GetObjectEventIdByXY + + thumb_func_start GetObjectEventIdByLocalIdAndMapInternal +GetObjectEventIdByLocalIdAndMapInternal: @ 805DFF4 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + lsls r2, 24 + lsrs r2, 24 + movs r1, 0 + ldr r6, _0805E02C @ =gObjectEvents +_0805E006: + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r3, r0, r6 + ldrb r0, [r3] + lsls r0, 31 + cmp r0, 0 + beq _0805E030 + ldrb r0, [r3, 0x8] + cmp r0, r5 + bne _0805E030 + ldrb r0, [r3, 0x9] + cmp r0, r4 + bne _0805E030 + ldrb r0, [r3, 0xA] + cmp r0, r2 + bne _0805E030 + adds r0, r1, 0 + b _0805E03C + .align 2, 0 +_0805E02C: .4byte gObjectEvents +_0805E030: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bls _0805E006 + movs r0, 0x10 +_0805E03C: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end GetObjectEventIdByLocalIdAndMapInternal + + thumb_func_start GetObjectEventIdByLocalId +GetObjectEventIdByLocalId: @ 805E044 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r4, _0805E068 @ =gObjectEvents +_0805E04E: + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r4 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _0805E06C + ldrb r0, [r1, 0x8] + cmp r0, r3 + bne _0805E06C + adds r0, r2, 0 + b _0805E078 + .align 2, 0 +_0805E068: .4byte gObjectEvents +_0805E06C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _0805E04E + movs r0, 0x10 +_0805E078: + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetObjectEventIdByLocalId + + thumb_func_start sub_805E080 +sub_805E080: @ 805E080 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + adds r5, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + movs r0, 0 + mov r10, r0 + mov r8, r0 + mov r9, r0 + movs r1, 0 + str r1, [sp, 0x4] + str r0, [sp, 0x8] + ldrb r0, [r5, 0x2] + cmp r0, 0xFF + bne _0805E0DA + movs r1, 0x1 + mov r10, r1 + ldrb r4, [r5, 0x8] + ldrb r7, [r5, 0xC] + ldrb r6, [r5, 0xE] + ldrh r0, [r5, 0x4] + mov r8, r0 + ldrh r5, [r5, 0x6] + mov r9, r5 + mov r1, r8 + str r1, [sp, 0x4] + mov r0, r9 + str r0, [sp, 0x8] + adds r0, r6, 0 + adds r1, r7, 0 + bl Overworld_GetMapHeaderByGroupAndId + ldr r1, [r0, 0x4] + lsls r0, r4, 1 + adds r0, r4 + lsls r0, 3 + subs r0, 0x18 + ldr r1, [r1, 0x4] + adds r5, r1, r0 +_0805E0DA: + ldrb r0, [r5] + adds r1, r7, 0 + adds r2, r6, 0 + mov r3, sp + bl GetAvailableObjectEventSlot + lsls r0, 24 + cmp r0, 0 + bne _0805E106 + ldr r1, [sp, 0x4] + lsls r2, r1, 16 + asrs r2, 16 + ldr r0, [sp, 0x8] + lsls r3, r0, 16 + asrs r3, 16 + adds r0, r5, 0 + mov r1, r10 + bl sub_805E238 + lsls r0, 24 + cmp r0, 0 + bne _0805E10A +_0805E106: + movs r0, 0x10 + b _0805E220 +_0805E10A: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805E13C @ =gObjectEvents + adds r4, r0, r1 + adds r0, r4, 0 + bl npc_clear_ids_and_state + mov r1, r10 + cmp r1, 0 + beq _0805E140 + mov r1, r8 + lsls r0, r1, 16 + movs r1, 0xE0 + lsls r1, 11 + adds r0, r1 + lsrs r3, r0, 16 + mov r1, r9 + lsls r0, r1, 16 + movs r1, 0xE0 + lsls r1, 11 + adds r0, r1 + b _0805E14E + .align 2, 0 +_0805E13C: .4byte gObjectEvents +_0805E140: + ldrh r0, [r5, 0x4] + adds r0, 0x7 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r0, [r5, 0x6] + adds r0, 0x7 + lsls r0, 16 +_0805E14E: + lsrs r2, r0, 16 + ldrb r0, [r4] + movs r1, 0x1 + orrs r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r5, 0x1] + strb r0, [r4, 0x5] + ldrb r0, [r5, 0x9] + strb r0, [r4, 0x6] + ldrb r0, [r5] + strb r0, [r4, 0x8] + strb r7, [r4, 0x9] + strb r6, [r4, 0xA] + strh r3, [r4, 0xC] + strh r2, [r4, 0xE] + strh r3, [r4, 0x10] + strh r2, [r4, 0x12] + strh r3, [r4, 0x14] + strh r2, [r4, 0x16] + ldrb r0, [r5, 0x8] + movs r6, 0xF + adds r1, r6, 0 + ands r1, r0 + ldrb r2, [r4, 0xB] + movs r0, 0x10 + negs r0, r0 + mov r8, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0xB] + ldrb r1, [r5, 0x8] + lsls r1, 4 + ands r0, r6 + orrs r0, r1 + strb r0, [r4, 0xB] + ldrb r1, [r5, 0xA] + lsls r1, 28 + movs r0, 0xF + mov r9, r0 + lsrs r1, 28 + ldrb r2, [r4, 0x19] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x19] + ldrb r1, [r5, 0xA] + lsrs r1, 4 + lsls r1, 4 + ands r0, r6 + orrs r0, r1 + strb r0, [r4, 0x19] + ldrh r0, [r5, 0xC] + strb r0, [r4, 0x7] + ldrh r0, [r5, 0xE] + strb r0, [r4, 0x1D] + ldr r1, _0805E230 @ =gUnknown_839FD5D + ldrb r0, [r5, 0x9] + adds r0, r1 + ldrb r1, [r0] + adds r0, r4, 0 + adds r0, 0x20 + strb r1, [r0] + ldrb r1, [r0] + adds r0, r4, 0 + bl ObjectEventSetDirection + adds r0, r4, 0 + bl ObjectEventHandleDynamicGraphicsId + ldr r1, _0805E234 @ =gUnknown_839FD0C + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0805E21C + ldrb r2, [r4, 0x19] + adds r0, r6, 0 + ands r0, r2 + cmp r0, 0 + bne _0805E204 + lsls r0, r2, 28 + lsrs r0, 28 + adds r0, 0x1 + mov r1, r9 + ands r0, r1 + mov r1, r8 + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x19] +_0805E204: + ldrb r2, [r4, 0x19] + movs r0, 0xF0 + ands r0, r2 + cmp r0, 0 + bne _0805E21C + lsrs r1, r2, 4 + adds r1, 0x1 + lsls r1, 4 + adds r0, r6, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x19] +_0805E21C: + mov r0, sp + ldrb r0, [r0] +_0805E220: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805E230: .4byte gUnknown_839FD5D +_0805E234: .4byte gUnknown_839FD0C + thumb_func_end sub_805E080 + + thumb_func_start sub_805E238 +sub_805E238: @ 805E238 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 24 + lsls r2, 16 + lsrs r4, r2, 16 + lsls r3, 16 + lsrs r5, r3, 16 + cmp r1, 0 + beq _0805E25C + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r5, 16 + asrs r2, 16 + bl sub_805E27C + lsls r0, 24 + cmp r0, 0 + beq _0805E274 +_0805E25C: + lsls r1, r4, 16 + asrs r1, 16 + lsls r2, r5, 16 + asrs r2, 16 + adds r0, r6, 0 + bl sub_805E2E8 + lsls r0, 24 + cmp r0, 0 + beq _0805E274 + movs r0, 0x1 + b _0805E276 +_0805E274: + movs r0, 0 +_0805E276: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805E238 + + thumb_func_start sub_805E27C +sub_805E27C: @ 805E27C + push {r4,r5,lr} + lsls r1, 16 + lsrs r3, r1, 16 + lsls r2, 16 + lsrs r4, r2, 16 + adds r5, r4, 0 + ldrb r0, [r0, 0x1] + subs r0, 0x5F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0805E2DE + ldr r0, _0805E2B8 @ =gSaveBlock1Ptr + ldr r2, [r0] + movs r0, 0 + ldrsh r1, [r2, r0] + lsls r0, r3, 16 + asrs r3, r0, 16 + cmp r1, r3 + bge _0805E2BC + adds r0, r1, 0 + adds r0, 0x8 + cmp r0, r3 + blt _0805E2DE + movs r0, 0x2 + ldrsh r3, [r2, r0] + subs r1, r3, 0x6 + lsls r0, r4, 16 + b _0805E2CE + .align 2, 0 +_0805E2B8: .4byte gSaveBlock1Ptr +_0805E2BC: + movs r1, 0 + ldrsh r0, [r2, r1] + subs r0, 0x8 + cmp r0, r3 + bgt _0805E2DE + movs r0, 0x2 + ldrsh r3, [r2, r0] + subs r1, r3, 0x6 + lsls r0, r5, 16 +_0805E2CE: + asrs r2, r0, 16 + cmp r1, r2 + bgt _0805E2DE + adds r0, r3, 0x6 + cmp r0, r2 + blt _0805E2DE + movs r0, 0 + b _0805E2E0 +_0805E2DE: + movs r0, 0x1 +_0805E2E0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805E27C + + thumb_func_start sub_805E2E8 +sub_805E2E8: @ 805E2E8 + push {r4,r5,lr} + adds r4, r0, 0 + bl GetCurrentMapType + lsls r0, 24 + lsrs r0, 24 + bl is_light_level_1_2_3_5_or_6 + lsls r0, 24 + cmp r0, 0 + beq _0805E37C + ldr r1, _0805E374 @ =VMap + ldr r0, [r1] + adds r3, r0, 0 + subs r3, 0x10 + ldr r0, [r1, 0x4] + adds r5, r0, 0 + subs r5, 0xF + ldrb r0, [r4, 0x1] + subs r0, 0x5F + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0805E37C + ldr r0, _0805E378 @ =gSaveBlock1Ptr + ldr r1, [r0] + movs r2, 0 + ldrsh r1, [r1, r2] + adds r2, r0, 0 + cmp r1, 0 + bne _0805E32E + movs r1, 0x4 + ldrsh r0, [r4, r1] + cmp r0, 0x8 + ble _0805E36A +_0805E32E: + ldr r0, [r2] + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, r3 + bne _0805E344 + movs r0, 0x4 + ldrsh r1, [r4, r0] + adds r0, r3, 0 + subs r0, 0x8 + cmp r1, r0 + bge _0805E36A +_0805E344: + ldr r0, [r2] + movs r1, 0x2 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0805E356 + movs r1, 0x6 + ldrsh r0, [r4, r1] + cmp r0, 0x6 + ble _0805E36A +_0805E356: + ldr r0, [r2] + movs r2, 0x2 + ldrsh r0, [r0, r2] + cmp r0, r5 + bne _0805E37C + movs r0, 0x6 + ldrsh r1, [r4, r0] + subs r0, r5, 0x6 + cmp r1, r0 + blt _0805E37C +_0805E36A: + adds r0, r4, 0 + bl sub_805E384 + movs r0, 0 + b _0805E37E + .align 2, 0 +_0805E374: .4byte VMap +_0805E378: .4byte gSaveBlock1Ptr +_0805E37C: + movs r0, 0x1 +_0805E37E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805E2E8 + + thumb_func_start sub_805E384 +sub_805E384: @ 805E384 + push {lr} + adds r1, r0, 0 + ldrh r0, [r1, 0x14] + subs r0, 0x11 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0xE + bhi _0805E39A + ldrh r0, [r1, 0x14] + bl FlagSet +_0805E39A: + pop {r0} + bx r0 + thumb_func_end sub_805E384 + + thumb_func_start sub_805E3A0 +sub_805E3A0: @ 805E3A0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r0, _0805E3B8 @ =gMapHeader + ldr r0, [r0, 0x4] + cmp r0, 0 + bne _0805E3CE + b _0805E404 + .align 2, 0 +_0805E3B8: .4byte gMapHeader +_0805E3BC: + ldr r0, [r7] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + adds r0, r4, 0 + bl sub_805E080 + lsls r0, 24 + lsrs r0, 24 + b _0805E406 +_0805E3CE: + ldrb r6, [r0] + movs r5, 0 + cmp r5, r6 + bcs _0805E404 + ldr r7, _0805E410 @ =gSaveBlock1Ptr +_0805E3D8: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 3 + movs r1, 0x8E + lsls r1, 4 + adds r0, r1 + ldr r1, [r7] + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, r8 + bne _0805E3FA + ldrh r0, [r4, 0x14] + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0805E3BC +_0805E3FA: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r6 + bcc _0805E3D8 +_0805E404: + movs r0, 0x10 +_0805E406: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805E410: .4byte gSaveBlock1Ptr + thumb_func_end sub_805E3A0 + + thumb_func_start GetAvailableObjectEventSlot +GetAvailableObjectEventSlot: @ 805E414 + push {r4-r7,lr} + mov r12, r3 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + lsls r2, 24 + lsrs r4, r2, 24 + movs r2, 0 + ldr r1, _0805E470 @ =gObjectEvents + ldrb r0, [r1] + lsls r0, 31 + adds r7, r1, 0 + cmp r0, 0 + beq _0805E468 + adds r3, r1, 0 +_0805E434: + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r3 + ldrb r0, [r1, 0x8] + cmp r0, r6 + bne _0805E44E + ldrb r0, [r1, 0x9] + cmp r0, r5 + bne _0805E44E + ldrb r0, [r1, 0xA] + cmp r0, r4 + beq _0805E46C +_0805E44E: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bhi _0805E46C + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r0, r7 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0805E434 +_0805E468: + cmp r2, 0xF + bls _0805E474 +_0805E46C: + movs r0, 0x1 + b _0805E4A8 + .align 2, 0 +_0805E470: .4byte gObjectEvents +_0805E474: + mov r0, r12 + strb r2, [r0] + ldr r1, _0805E4B0 @ =gObjectEvents +_0805E47A: + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3] + lsls r0, 31 + cmp r0, 0 + beq _0805E49C + ldrb r0, [r3, 0x8] + cmp r0, r6 + bne _0805E49C + ldrb r0, [r3, 0x9] + cmp r0, r5 + bne _0805E49C + ldrb r0, [r3, 0xA] + cmp r0, r4 + beq _0805E46C +_0805E49C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _0805E47A + movs r0, 0 +_0805E4A8: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805E4B0: .4byte gObjectEvents + thumb_func_end GetAvailableObjectEventSlot + + thumb_func_start RemoveObjectEvent +RemoveObjectEvent: @ 805E4B4 + push {lr} + ldrb r2, [r0] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + bl RemoveObjectEventInternal + pop {r0} + bx r0 + thumb_func_end RemoveObjectEvent + + thumb_func_start RemoveObjectEventByLocalIdAndMap +RemoveObjectEventByLocalIdAndMap: @ 805E4C8 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805E506 + mov r0, sp + ldrb r0, [r0] + bl GetObjectEventFlagIdByObjectEventId + lsls r0, 16 + lsrs r0, 16 + bl FlagSet + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805E50C @ =gObjectEvents + adds r0, r1 + bl RemoveObjectEvent +_0805E506: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0805E50C: .4byte gObjectEvents + thumb_func_end RemoveObjectEventByLocalIdAndMap + + thumb_func_start RemoveObjectEventInternal +RemoveObjectEventInternal: @ 805E510 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldrb r0, [r4, 0x5] + bl GetObjectEventGraphicsInfo + ldrh r2, [r0, 0x6] + ldr r1, _0805E554 @ =0xffff0000 + ldr r0, [sp, 0x4] + ands r0, r1 + orrs r0, r2 + str r0, [sp, 0x4] + ldr r2, _0805E558 @ =gSprites + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r2, 0 + adds r1, 0xC + adds r0, r1 + mov r1, sp + str r1, [r0] + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + bl DestroySprite + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805E554: .4byte 0xffff0000 +_0805E558: .4byte gSprites + thumb_func_end RemoveObjectEventInternal + + thumb_func_start unref_sub_808D958 +unref_sub_808D958: @ 805E55C + push {r4,lr} + movs r4, 0 +_0805E560: + ldr r0, _0805E588 @ =gPlayerAvatar + ldrb r0, [r0, 0x5] + cmp r4, r0 + beq _0805E576 + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + ldr r1, _0805E58C @ =gObjectEvents + adds r0, r1 + bl RemoveObjectEvent +_0805E576: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0805E560 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805E588: .4byte gPlayerAvatar +_0805E58C: .4byte gObjectEvents + thumb_func_end unref_sub_808D958 + + thumb_func_start sub_805E590 +sub_805E590: @ 805E590 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r1, 0 + adds r1, r2, 0 + adds r2, r3, 0 + ldr r3, [sp, 0x20] + ldr r4, [sp, 0x24] + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 16 + lsrs r3, 16 + mov r9, r3 + lsls r4, 16 + lsrs r4, 16 + mov r10, r4 + bl sub_805E080 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x10 + bne _0805E5CA + movs r0, 0x10 + b _0805E718 +_0805E5CA: + mov r0, r8 + lsls r4, r0, 3 + adds r0, r4, r0 + lsls r0, 2 + ldr r1, _0805E5F4 @ =gObjectEvents + adds r5, r0, r1 + ldrb r0, [r5, 0x5] + bl GetObjectEventGraphicsInfo + adds r6, r0, 0 + ldrb r1, [r6, 0xC] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _0805E5F8 + ldrh r0, [r6, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl npc_load_two_palettes__no_record + b _0805E606 + .align 2, 0 +_0805E5F4: .4byte gObjectEvents +_0805E5F8: + cmp r0, 0xA + bne _0805E606 + ldrh r0, [r6, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl npc_load_two_palettes__and_record +_0805E606: + ldrb r0, [r5, 0x6] + cmp r0, 0x4C + bne _0805E614 + ldrb r0, [r5, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r5, 0x1] +_0805E614: + ldr r1, _0805E648 @ =0x0000ffff + adds r0, r1, 0 + strh r0, [r7, 0x2] + adds r0, r7, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x40 + bne _0805E650 + ldr r0, _0805E64C @ =gObjectEvents + mov r2, r8 + adds r1, r4, r2 + lsls r1, 2 + adds r1, r0 + ldrb r2, [r1] + movs r0, 0x2 + negs r0, r0 + ands r0, r2 + strb r0, [r1] + movs r0, 0x10 + b _0805E718 + .align 2, 0 +_0805E648: .4byte 0x0000ffff +_0805E64C: .4byte gObjectEvents +_0805E650: + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + ldr r1, _0805E728 @ =gSprites + adds r4, r0, r1 + mov r1, r9 + lsls r0, r1, 16 + asrs r0, 16 + ldrh r2, [r5, 0x10] + adds r0, r2 + lsls r0, 16 + asrs r0, 16 + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + ldrh r2, [r5, 0x12] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + bl sub_8063AD4 + ldrh r0, [r6, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r4, 0 + adds r1, 0x28 + strb r0, [r1] + ldrh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r2, r4, 0 + adds r2, 0x29 + strb r0, [r2] + ldrh r0, [r4, 0x20] + adds r0, 0x8 + strh r0, [r4, 0x20] + ldrh r1, [r4, 0x22] + adds r1, 0x10 + movs r0, 0 + ldrsb r0, [r2, r0] + adds r0, r1 + strh r0, [r4, 0x22] + ldrb r1, [r6, 0xC] + lsls r1, 28 + lsrs r1, 24 + ldrb r2, [r4, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + mov r0, r8 + strh r0, [r4, 0x2E] + strb r7, [r5, 0x4] + ldrb r1, [r6, 0xC] + lsls r1, 25 + lsrs r1, 31 + lsls r1, 4 + ldrb r2, [r5, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _0805E702 + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim +_0805E702: + ldrb r0, [r5, 0xB] + lsrs r0, 4 + adds r1, r4, 0 + movs r2, 0x1 + bl SetObjectSubpriorityByZCoord + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80679F8 + mov r0, r8 +_0805E718: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805E728: .4byte gSprites + thumb_func_end sub_805E590 + + thumb_func_start SpawnObjectEvent +SpawnObjectEvent: @ 805E72C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x2C + mov r9, r0 + adds r6, r1, 0 + mov r8, r2 + adds r4, r3, 0 + ldr r5, [sp, 0x48] + lsls r6, 24 + lsrs r6, 24 + mov r0, r8 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + movs r0, 0 + str r0, [sp, 0x20] + mov r1, r9 + ldrb r0, [r1, 0x1] + bl GetObjectEventGraphicsInfo + adds r7, r0, 0 + add r2, sp, 0x20 + mov r0, r9 + add r1, sp, 0x8 + bl MakeObjectTemplateFromObjectEventTemplate + ldrh r3, [r7, 0x6] + ldr r2, _0805E7A4 @ =0xffff0000 + add r1, sp, 0x24 + ldr r0, [r1, 0x4] + ands r0, r2 + orrs r0, r3 + str r0, [r1, 0x4] + str r1, [sp, 0x14] + lsls r4, 16 + asrs r4, 16 + str r4, [sp] + lsls r5, 16 + asrs r5, 16 + str r5, [sp, 0x4] + mov r0, r9 + add r1, sp, 0x8 + adds r2, r6, 0 + mov r3, r8 + bl sub_805E590 + lsls r0, 24 + lsrs r2, r0, 24 + adds r5, r2, 0 + cmp r2, 0x10 + bne _0805E7A8 + movs r0, 0x10 + b _0805E7DE + .align 2, 0 +_0805E7A4: .4byte 0xffff0000 +_0805E7A8: + ldr r4, _0805E7EC @ =gSprites + ldr r1, _0805E7F0 @ =gObjectEvents + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r1, [r3, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r1, r4, 0 + adds r1, 0xC + adds r0, r1 + ldr r1, [r7, 0x1C] + str r1, [r0] + ldr r2, [sp, 0x20] + cmp r2, 0 + beq _0805E7DC + ldrb r1, [r3, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r1, r2, 0 + bl SetSubspriteTables +_0805E7DC: + adds r0, r5, 0 +_0805E7DE: + add sp, 0x2C + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805E7EC: .4byte gSprites +_0805E7F0: .4byte gObjectEvents + thumb_func_end SpawnObjectEvent + + thumb_func_start SpawnSpecialObjectEvent +SpawnSpecialObjectEvent: @ 805E7F4 + push {r4-r6,lr} + sub sp, 0x8 + adds r5, r0, 0 + mov r4, sp + adds r4, 0x6 + add r0, sp, 0x4 + adds r1, r4, 0 + bl GetObjectEventMovingCameraOffset + ldr r0, _0805E82C @ =gSaveBlock1Ptr + ldr r0, [r0] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + add r0, sp, 0x4 + movs r6, 0 + ldrsh r3, [r0, r6] + movs r6, 0 + ldrsh r0, [r4, r6] + str r0, [sp] + adds r0, r5, 0 + bl SpawnObjectEvent + lsls r0, 24 + lsrs r0, 24 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805E82C: .4byte gSaveBlock1Ptr + thumb_func_end SpawnSpecialObjectEvent + + thumb_func_start SpawnSpecialObjectEventParameterized +SpawnSpecialObjectEventParameterized: @ 805E830 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x18 + ldr r4, [sp, 0x2C] + ldr r5, [sp, 0x30] + mov r8, r5 + lsls r0, 24 + lsrs r0, 24 + lsls r3, 16 + ldr r5, _0805E894 @ =0xfff90000 + adds r3, r5 + lsrs r3, 16 + lsls r4, 16 + adds r4, r5 + lsrs r4, 16 + mov r5, sp + movs r6, 0 + strb r2, [r5] + mov r2, sp + strb r0, [r2, 0x1] + mov r0, sp + strb r6, [r0, 0x2] + movs r5, 0 + strh r3, [r0, 0x4] + strh r4, [r0, 0x6] + mov r2, r8 + strb r2, [r0, 0x8] + strb r1, [r0, 0x9] + mov r2, sp + ldrb r1, [r2, 0xA] + movs r0, 0x10 + negs r0, r0 + ands r0, r1 + strb r0, [r2, 0xA] + mov r0, sp + strb r5, [r0, 0xA] + strh r6, [r0, 0xC] + strh r6, [r0, 0xE] + bl SpawnSpecialObjectEvent + lsls r0, 24 + lsrs r0, 24 + add sp, 0x18 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805E894: .4byte 0xfff90000 + thumb_func_end SpawnSpecialObjectEventParameterized + + thumb_func_start show_sprite +show_sprite: @ 805E898 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + adds r1, r7, 0 + adds r2, r6, 0 + bl GetObjectEventTemplateByLocalIdAndMap + adds r5, r0, 0 + cmp r5, 0 + beq _0805E8DE + mov r4, sp + adds r4, 0x6 + add r0, sp, 0x4 + adds r1, r4, 0 + bl GetObjectEventMovingCameraOffset + add r0, sp, 0x4 + movs r1, 0 + ldrsh r3, [r0, r1] + movs r1, 0 + ldrsh r0, [r4, r1] + str r0, [sp] + adds r0, r5, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl SpawnObjectEvent + lsls r0, 24 + lsrs r0, 24 + b _0805E8E0 +_0805E8DE: + movs r0, 0x10 +_0805E8E0: + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end show_sprite + + thumb_func_start sub_805E8E8 +sub_805E8E8: @ 805E8E8 + push {r4-r7,lr} + adds r6, r1, 0 + adds r4, r2, 0 + adds r7, r3, 0 + lsls r0, 24 + lsrs r0, 24 + bl GetObjectEventGraphicsInfo + adds r5, r0, 0 + ldrh r0, [r5] + strh r0, [r4] + ldrh r0, [r5, 0x2] + strh r0, [r4, 0x2] + ldr r0, [r5, 0x10] + str r0, [r4, 0x4] + ldr r0, [r5, 0x18] + str r0, [r4, 0x8] + ldr r0, [r5, 0x1C] + str r0, [r4, 0xC] + ldr r0, [r5, 0x20] + str r0, [r4, 0x10] + bl ScriptContext1_IsScriptSetUp + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0805E934 + bl sub_8112CAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0805E934 + ldr r0, _0805E930 @ =sub_811246C + str r0, [r4, 0x14] + b _0805E936 + .align 2, 0 +_0805E930: .4byte sub_811246C +_0805E934: + str r6, [r4, 0x14] +_0805E936: + ldr r0, [r5, 0x14] + str r0, [r7] + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_805E8E8 + + thumb_func_start MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex +MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex: @ 805E940 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + ldr r4, _0805E95C @ =gUnknown_839FBC8 + lsrs r1, 14 + adds r1, r4 + ldr r1, [r1] + bl sub_805E8E8 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805E95C: .4byte gUnknown_839FBC8 + thumb_func_end MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex + + thumb_func_start MakeObjectTemplateFromObjectEventTemplate +MakeObjectTemplateFromObjectEventTemplate: @ 805E960 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r3, r2, 0 + ldrb r0, [r4, 0x1] + ldrb r1, [r4, 0x9] + adds r2, r5, 0 + bl MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end MakeObjectTemplateFromObjectEventTemplate + + thumb_func_start AddPseudoEventObject +AddPseudoEventObject: @ 805E978 + push {r4-r6,lr} + sub sp, 0x1C + ldr r4, [sp, 0x2C] + lsls r0, 16 + lsrs r0, 16 + lsls r2, 16 + lsrs r6, r2, 16 + lsls r3, 16 + lsrs r5, r3, 16 + lsls r4, 24 + lsrs r4, 24 + add r3, sp, 0x18 + mov r2, sp + bl sub_805E8E8 + mov r0, sp + ldrh r1, [r0, 0x2] + ldr r0, _0805E9F0 @ =0x0000ffff + cmp r1, r0 + beq _0805E9A8 + mov r0, sp + ldrh r0, [r0, 0x2] + bl sub_805F4B0 +_0805E9A8: + lsls r1, r6, 16 + asrs r1, 16 + lsls r2, r5, 16 + asrs r2, 16 + mov r0, sp + adds r3, r4, 0 + bl CreateSprite + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _0805E9E4 + ldr r1, [sp, 0x18] + cmp r1, 0 + beq _0805E9E4 + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + ldr r0, _0805E9F4 @ =gSprites + adds r4, r0 + adds r0, r4, 0 + bl SetSubspriteTables + adds r4, 0x42 + ldrb r1, [r4] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4] +_0805E9E4: + adds r0, r5, 0 + add sp, 0x1C + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805E9F0: .4byte 0x0000ffff +_0805E9F4: .4byte gSprites + thumb_func_end AddPseudoEventObject + + thumb_func_start sprite_new +sprite_new: @ 805E9F8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + adds r5, r0, 0 + ldr r0, [sp, 0x44] + ldr r4, [sp, 0x48] + lsls r5, 24 + lsrs r5, 24 + lsls r1, 24 + lsrs r1, 24 + mov r10, r1 + add r1, sp, 0x18 + mov r8, r1 + strh r2, [r1] + mov r6, sp + adds r6, 0x1A + strh r3, [r6] + lsls r0, 24 + lsrs r7, r0, 24 + mov r9, r7 + lsls r4, 24 + lsrs r4, 24 + str r4, [sp, 0x20] + adds r0, r5, 0 + bl GetObjectEventGraphicsInfo + adds r4, r0, 0 + ldr r1, _0805EB38 @ =sub_8068FA8 + add r3, sp, 0x1C + adds r0, r5, 0 + mov r2, sp + bl sub_805E8E8 + mov r1, sp + ldr r2, _0805EB3C @ =0x0000ffff + adds r0, r2, 0 + strh r0, [r1, 0x2] + mov r1, r8 + movs r2, 0 + ldrsh r0, [r1, r2] + adds r0, 0x7 + strh r0, [r1] + movs r1, 0 + ldrsh r0, [r6, r1] + adds r0, 0x7 + strh r0, [r6] + mov r0, r8 + adds r1, r6, 0 + movs r2, 0x8 + movs r3, 0x10 + bl sub_8063BC4 + mov r2, r8 + movs r0, 0 + ldrsh r1, [r2, r0] + movs r0, 0 + ldrsh r2, [r6, r0] + mov r0, sp + movs r3, 0 + bl CreateSpriteAtEnd + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _0805EB24 + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + ldr r1, _0805EB40 @ =gSprites + adds r5, r0, r1 + ldrh r0, [r4, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r5, 0 + adds r1, 0x28 + strb r0, [r1] + ldrh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, 0x1 + strb r0, [r1] + movs r0, 0 + ldrsb r0, [r1, r0] + ldrh r1, [r5, 0x22] + adds r0, r1 + strh r0, [r5, 0x22] + ldrb r1, [r4, 0xC] + lsls r1, 28 + lsrs r1, 24 + ldrb r3, [r5, 0x5] + movs r2, 0xF + adds r0, r2, 0 + ands r0, r3 + orrs r0, r1 + strb r0, [r5, 0x5] + adds r3, r5, 0 + adds r3, 0x3E + ldrb r0, [r3] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r3] + mov r0, r10 + strh r0, [r5, 0x2E] + strh r7, [r5, 0x30] + ldrb r1, [r4, 0xC] + ands r2, r1 + cmp r2, 0xA + bne _0805EAE4 + ldrh r0, [r4, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl npc_load_two_palettes__and_record +_0805EAE4: + ldr r1, [sp, 0x1C] + cmp r1, 0 + beq _0805EB00 + adds r0, r5, 0 + bl SetSubspriteTables + adds r2, r5, 0 + adds r2, 0x42 + ldrb r0, [r2] + movs r1, 0x3F + ands r1, r0 + movs r0, 0x80 + orrs r1, r0 + strb r1, [r2] +_0805EB00: + adds r0, r5, 0 + mov r1, r9 + bl InitObjectPriorityByZCoord + mov r0, r9 + adds r1, r5, 0 + movs r2, 0x1 + bl SetObjectSubpriorityByZCoord + ldr r0, [sp, 0x20] + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim +_0805EB24: + adds r0, r6, 0 + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805EB38: .4byte sub_8068FA8 +_0805EB3C: .4byte 0x0000ffff +_0805EB40: .4byte gSprites + thumb_func_end sprite_new + + thumb_func_start sub_805EB44 +sub_805EB44: @ 805EB44 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x1C + adds r6, r0, 0 + adds r4, r2, 0 + adds r5, r3, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + adds r0, r6, 0 + bl GetObjectEventGraphicsInfo + adds r7, r0, 0 + ldr r1, _0805EC24 @ =SpriteCallbackDummy + add r3, sp, 0x18 + adds r0, r6, 0 + mov r2, sp + bl sub_805E8E8 + mov r1, sp + ldr r2, _0805EC28 @ =0x0000ffff + adds r0, r2, 0 + strh r0, [r1, 0x2] + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + mov r0, sp + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0 + bl CreateSpriteAtEnd + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x40 + beq _0805EC14 + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + ldr r1, _0805EC2C @ =gSprites + adds r4, r0, r1 + ldrh r0, [r7, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r4, 0 + adds r1, 0x29 + strb r0, [r1] + movs r0, 0 + ldrsb r0, [r1, r0] + ldrh r1, [r4, 0x22] + adds r0, r1 + strh r0, [r4, 0x22] + ldrb r1, [r7, 0xC] + lsls r1, 28 + lsrs r1, 24 + ldrb r3, [r4, 0x5] + movs r2, 0xF + adds r0, r2, 0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4, 0x5] + mov r0, r8 + strh r0, [r4, 0x2E] + ldrb r1, [r7, 0xC] + ands r2, r1 + cmp r2, 0xA + bne _0805EBE6 + ldrh r0, [r7, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl npc_load_two_palettes__and_record +_0805EBE6: + ldr r1, [sp, 0x18] + cmp r1, 0 + beq _0805EC02 + adds r0, r4, 0 + bl SetSubspriteTables + adds r2, r4, 0 + adds r2, 0x42 + ldrb r0, [r2] + movs r1, 0x3F + ands r1, r0 + movs r0, 0x80 + orrs r1, r0 + strb r1, [r2] +_0805EC02: + movs r0, 0x1 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim +_0805EC14: + adds r0, r5, 0 + add sp, 0x1C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805EC24: .4byte SpriteCallbackDummy +_0805EC28: .4byte 0x0000ffff +_0805EC2C: .4byte gSprites + thumb_func_end sub_805EB44 + + thumb_func_start sub_805EC30 +sub_805EC30: @ 805EC30 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x4] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x8] + ldr r0, _0805ED08 @ =gMapHeader + ldr r3, [r0, 0x4] + cmp r3, 0 + beq _0805ECF8 + ldr r7, _0805ED0C @ =gSaveBlock1Ptr + ldr r2, [r7] + ldrh r1, [r2] + subs r0, r1, 0x2 + lsls r0, 16 + lsrs r4, r0, 16 + adds r1, 0x11 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0xC] + ldrh r1, [r2, 0x2] + adds r0, r1, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + ldrb r3, [r3] + str r3, [sp, 0x10] + movs r5, 0 + cmp r5, r3 + bcs _0805ECF8 + lsls r0, r1, 16 + asrs r0, 16 + mov r9, r0 + lsls r0, r4, 16 + asrs r0, 16 + mov r8, r0 +_0805EC86: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 3 + movs r1, 0x8E + lsls r1, 4 + adds r0, r1 + ldr r1, [r7] + adds r4, r1, r0 + ldrh r0, [r4, 0x4] + adds r0, 0x7 + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r0, [r4, 0x6] + adds r0, 0x7 + lsls r0, 16 + asrs r1, r0, 16 + cmp r9, r1 + bgt _0805ECEC + mov r3, r10 + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, r1 + blt _0805ECEC + lsls r0, r2, 16 + asrs r1, r0, 16 + cmp r8, r1 + bgt _0805ECEC + ldr r6, [sp, 0xC] + lsls r0, r6, 16 + asrs r0, 16 + cmp r0, r1 + blt _0805ECEC + ldrh r0, [r4, 0x14] + bl FlagGet + lsls r0, 24 + cmp r0, 0 + bne _0805ECEC + ldr r0, [r7] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + ldr r0, [sp, 0x4] + lsls r3, r0, 16 + ldr r6, [sp, 0x8] + lsls r0, r6, 16 + asrs r0, 16 + str r0, [sp] + adds r0, r4, 0 + asrs r3, 16 + bl SpawnObjectEvent +_0805ECEC: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r0, [sp, 0x10] + cmp r5, r0 + bcc _0805EC86 +_0805ECF8: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805ED08: .4byte gMapHeader +_0805ED0C: .4byte gSaveBlock1Ptr + thumb_func_end sub_805EC30 + + thumb_func_start RemoveObjectEventsOutsideView +RemoveObjectEventsOutsideView: @ 805ED10 + push {r4-r6,lr} + movs r3, 0 + ldr r6, _0805ED64 @ =gUnknown_2031DEC +_0805ED16: + movs r2, 0 + movs r4, 0 + adds r5, r3, 0x1 +_0805ED1C: + lsls r0, r2, 2 + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, 0 + beq _0805ED2E + ldrb r1, [r1, 0x2] + cmp r3, r1 + bne _0805ED2E + movs r4, 0x1 +_0805ED2E: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _0805ED1C + cmp r4, 0 + bne _0805ED56 + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + ldr r1, _0805ED68 @ =gObjectEvents + adds r2, r0, r1 + ldr r0, [r2] + ldr r1, _0805ED6C @ =0x00010001 + ands r0, r1 + cmp r0, 0x1 + bne _0805ED56 + adds r0, r2, 0 + bl RemoveObjectEventIfOutsideView +_0805ED56: + lsls r0, r5, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _0805ED16 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805ED64: .4byte gUnknown_2031DEC +_0805ED68: .4byte gObjectEvents +_0805ED6C: .4byte 0x00010001 + thumb_func_end RemoveObjectEventsOutsideView + + thumb_func_start RemoveObjectEventIfOutsideView +RemoveObjectEventIfOutsideView: @ 805ED70 + push {r4-r7,lr} + adds r3, r0, 0 + ldr r0, _0805EDEC @ =gSaveBlock1Ptr + ldr r2, [r0] + ldrh r0, [r2] + subs r1, r0, 0x2 + lsls r1, 16 + adds r0, 0x11 + lsls r0, 16 + lsrs r5, r0, 16 + ldrh r4, [r2, 0x2] + adds r0, r4, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r6, r0, 16 + movs r0, 0x10 + ldrsh r2, [r3, r0] + lsrs r7, r1, 16 + asrs r1, 16 + cmp r2, r1 + blt _0805EDB6 + lsls r0, r5, 16 + asrs r0, 16 + cmp r2, r0 + bgt _0805EDB6 + movs r0, 0x12 + ldrsh r1, [r3, r0] + lsls r0, r4, 16 + asrs r0, 16 + cmp r1, r0 + blt _0805EDB6 + lsls r0, r6, 16 + asrs r0, 16 + cmp r1, r0 + ble _0805EDE4 +_0805EDB6: + movs r0, 0xC + ldrsh r1, [r3, r0] + lsls r0, r7, 16 + asrs r0, 16 + cmp r1, r0 + blt _0805EDDE + lsls r0, r5, 16 + asrs r0, 16 + cmp r1, r0 + bgt _0805EDDE + movs r0, 0xE + ldrsh r1, [r3, r0] + lsls r0, r4, 16 + asrs r0, 16 + cmp r1, r0 + blt _0805EDDE + lsls r0, r6, 16 + asrs r0, 16 + cmp r1, r0 + ble _0805EDE4 +_0805EDDE: + adds r0, r3, 0 + bl RemoveObjectEvent +_0805EDE4: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805EDEC: .4byte gSaveBlock1Ptr + thumb_func_end RemoveObjectEventIfOutsideView + + thumb_func_start sub_805EDF0 +sub_805EDF0: @ 805EDF0 + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + bl ClearPlayerAvatarInfo + movs r6, 0 + ldr r7, _0805EE38 @ =gObjectEvents + lsls r4, 16 + lsls r5, 16 +_0805EE0A: + lsls r0, r6, 3 + adds r0, r6 + lsls r0, 2 + adds r0, r7 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0805EE24 + adds r0, r6, 0 + asrs r1, r4, 16 + asrs r2, r5, 16 + bl sub_805EE3C +_0805EE24: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xF + bls _0805EE0A + bl sub_805DE8C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805EE38: .4byte gObjectEvents + thumb_func_end sub_805EDF0 + + thumb_func_start sub_805EE3C +sub_805EE3C: @ 805EE3C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x24 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r2, 16 + lsrs r2, 16 + mov r10, r2 + movs r7, 0 + ldr r2, _0805EFE0 @ =gUnknown_2031DEC +_0805EE5E: + lsls r0, r7, 2 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _0805EE70 + ldrb r1, [r1, 0x2] + cmp r8, r1 + bne _0805EE70 + b _0805EFCE +_0805EE70: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x3 + bls _0805EE5E + mov r1, r8 + lsls r0, r1, 3 + add r0, r8 + lsls r0, 2 + ldr r1, _0805EFE4 @ =gObjectEvents + adds r6, r0, r1 + movs r0, 0 + str r0, [sp, 0x20] + ldrb r0, [r6, 0x5] + bl GetObjectEventGraphicsInfo + adds r5, r0, 0 + ldrh r2, [r5, 0x6] + ldr r1, _0805EFE8 @ =0xffff0000 + add r4, sp, 0x18 + ldr r0, [r4, 0x4] + ands r0, r1 + orrs r0, r2 + str r0, [r4, 0x4] + ldrb r0, [r6, 0x5] + ldrb r1, [r6, 0x6] + add r3, sp, 0x20 + mov r2, sp + bl MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex + str r4, [sp, 0xC] + mov r0, sp + ldr r2, _0805EFEC @ =0x0000ffff + adds r4, r2, 0 + strh r4, [r0, 0x2] + ldrb r1, [r5, 0xC] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + bne _0805EECA + ldrh r0, [r5, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl npc_load_two_palettes__no_record +_0805EECA: + ldrb r0, [r5, 0xC] + lsls r1, r0, 28 + lsrs r0, r1, 28 + cmp r0, 0x9 + bls _0805EEDC + ldrh r0, [r5, 0x2] + lsrs r1, 28 + bl npc_load_two_palettes__and_record +_0805EEDC: + mov r0, sp + strh r4, [r0, 0x2] + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x40 + beq _0805EFCE + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + ldr r1, _0805EFF0 @ =gSprites + adds r4, r0, r1 + mov r1, r9 + lsls r0, r1, 16 + asrs r0, 16 + ldrh r2, [r6, 0x10] + adds r0, r2 + lsls r0, 16 + asrs r0, 16 + mov r2, r10 + lsls r1, r2, 16 + asrs r1, 16 + ldrh r2, [r6, 0x12] + adds r1, r2 + lsls r1, 16 + asrs r1, 16 + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + bl sub_8063AD4 + ldrh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r4, 0 + adds r1, 0x28 + strb r0, [r1] + ldrh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r2, r4, 0 + adds r2, 0x29 + strb r0, [r2] + ldrh r0, [r4, 0x20] + adds r0, 0x8 + strh r0, [r4, 0x20] + ldrh r1, [r4, 0x22] + adds r1, 0x10 + movs r0, 0 + ldrsb r0, [r2, r0] + adds r0, r1 + strh r0, [r4, 0x22] + ldr r0, [r5, 0x1C] + str r0, [r4, 0xC] + ldrb r0, [r6, 0x6] + cmp r0, 0xB + bne _0805EF6A + mov r0, r8 + adds r1, r7, 0 + bl SetPlayerAvatarObjectEventIdAndObjectId + bl sub_80DB0C4 + strb r0, [r6, 0x1B] +_0805EF6A: + ldr r1, [sp, 0x20] + cmp r1, 0 + beq _0805EF76 + adds r0, r4, 0 + bl SetSubspriteTables +_0805EF76: + ldrb r1, [r5, 0xC] + lsls r1, 28 + lsrs r1, 24 + ldrb r2, [r4, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + mov r0, r8 + strh r0, [r4, 0x2E] + strb r7, [r6, 0x4] + ldrb r0, [r6, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _0805EFBC + ldrb r0, [r6, 0x6] + cmp r0, 0xB + beq _0805EFBC + ldrb r0, [r6, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim +_0805EFBC: + adds r0, r6, 0 + bl sub_805EFF4 + ldrb r0, [r6, 0xB] + lsrs r0, 4 + adds r1, r4, 0 + movs r2, 0x1 + bl SetObjectSubpriorityByZCoord +_0805EFCE: + add sp, 0x24 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805EFE0: .4byte gUnknown_2031DEC +_0805EFE4: .4byte gObjectEvents +_0805EFE8: .4byte 0xffff0000 +_0805EFEC: .4byte 0x0000ffff +_0805EFF0: .4byte gSprites + thumb_func_end sub_805EE3C + + thumb_func_start sub_805EFF4 +sub_805EFF4: @ 805EFF4 + push {lr} + ldrb r2, [r0] + movs r3, 0x3 + negs r3, r3 + adds r1, r3, 0 + ands r1, r2 + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + ldrb r2, [r0, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + ands r1, r3 + movs r2, 0x5 + negs r2, r2 + ands r1, r2 + subs r2, 0x4 + ands r1, r2 + subs r2, 0x8 + ands r1, r2 + subs r2, 0x10 + ands r1, r2 + strb r1, [r0, 0x2] + bl ObjectEventClearAnim + pop {r0} + bx r0 + thumb_func_end sub_805EFF4 + + thumb_func_start SetPlayerAvatarObjectEventIdAndObjectId +SetPlayerAvatarObjectEventIdAndObjectId: @ 805F02C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0805F058 @ =gPlayerAvatar + strb r0, [r5, 0x5] + strb r1, [r5, 0x4] + ldr r1, _0805F05C @ =gObjectEvents + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + adds r4, r1 + ldrb r0, [r4, 0x5] + bl sub_805C824 + strb r0, [r5, 0x7] + ldrb r0, [r4, 0x5] + movs r1, 0x20 + bl SetPlayerAvatarExtraStateTransition + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F058: .4byte gPlayerAvatar +_0805F05C: .4byte gObjectEvents + thumb_func_end SetPlayerAvatarObjectEventIdAndObjectId + + thumb_func_start EventObjectSetGraphicsId +EventObjectSetGraphicsId: @ 805F060 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + str r1, [sp] + adds r0, r1, 0 + bl GetObjectEventGraphicsInfo + adds r5, r0, 0 + ldrb r1, [r6, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F1CC @ =gSprites + adds r4, r0, r1 + ldrb r1, [r5, 0xC] + movs r0, 0xF + mov r8, r0 + ands r0, r1 + cmp r0, 0 + bne _0805F09E + ldrh r0, [r5, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl pal_patch_for_npc +_0805F09E: + ldrb r1, [r5, 0xC] + mov r0, r8 + ands r0, r1 + cmp r0, 0xA + bne _0805F0B2 + ldrh r0, [r5, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl npc_load_two_palettes__and_record +_0805F0B2: + ldr r0, [r4, 0xC] + ldrh r0, [r0, 0x4] + lsrs r0, 5 + lsls r0, 24 + lsrs r0, 24 + mov r10, r0 + adds r7, r4, 0 + adds r7, 0x3F + ldrb r1, [r7] + movs r2, 0x40 + mov r9, r2 + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _0805F0D6 + adds r0, r4, 0 + bl sub_80075C0 +_0805F0D6: + ldr r0, [r5, 0x10] + ldrb r2, [r0, 0x1] + lsrs r2, 6 + lsls r2, 6 + ldrb r3, [r4, 0x1] + movs r1, 0x3F + adds r0, r1, 0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, 0x1] + ldr r0, [r5, 0x10] + ldrb r0, [r0, 0x3] + lsrs r0, 6 + lsls r0, 6 + ldrb r2, [r4, 0x3] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, 0x3] + ldr r3, [r5, 0x1C] + str r3, [r4, 0xC] + ldr r0, [r5, 0x18] + str r0, [r4, 0x8] + ldr r0, [r5, 0x14] + str r0, [r4, 0x18] + ldrb r1, [r5, 0xC] + lsls r1, 28 + lsrs r1, 24 + ldrb r2, [r4, 0x5] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x5] + ldrb r1, [r7] + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _0805F152 + ldrh r0, [r3, 0x4] + lsrs r0, 5 + lsls r0, 24 + lsrs r0, 24 + bl AllocSpriteTiles + lsls r0, 16 + asrs r2, r0, 16 + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + bne _0805F142 + mov r0, r10 + bl AllocSpriteTiles + lsls r0, 16 + asrs r2, r0, 16 +_0805F142: + ldr r1, _0805F1D0 @ =0x000003ff + adds r0, r1, 0 + ands r2, r0 + ldrh r1, [r4, 0x4] + ldr r0, _0805F1D4 @ =0xfffffc00 + ands r0, r1 + orrs r0, r2 + strh r0, [r4, 0x4] +_0805F152: + ldrb r1, [r5, 0xC] + lsls r1, 25 + lsrs r1, 31 + lsls r1, 4 + ldrb r2, [r6, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r6, 0x1] + mov r2, sp + ldrb r2, [r2] + strb r2, [r6, 0x5] + movs r1, 0x10 + ldrsh r0, [r6, r1] + movs r2, 0x12 + ldrsh r1, [r6, r2] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + bl sub_8063B1C + ldrh r0, [r5, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r4, 0 + adds r1, 0x28 + strb r0, [r1] + ldrh r0, [r5, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r2, r4, 0 + adds r2, 0x29 + strb r0, [r2] + ldrh r0, [r4, 0x20] + adds r0, 0x8 + strh r0, [r4, 0x20] + ldrh r1, [r4, 0x22] + adds r1, 0x10 + movs r0, 0 + ldrsb r0, [r2, r0] + adds r0, r1 + strh r0, [r4, 0x22] + ldrb r0, [r6, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _0805F1BA + bl CameraObjectReset1 +_0805F1BA: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805F1CC: .4byte gSprites +_0805F1D0: .4byte 0x000003ff +_0805F1D4: .4byte 0xfffffc00 + thumb_func_end EventObjectSetGraphicsId + + thumb_func_start ObjectEventSetGraphicsIdByLocalIdAndMap +ObjectEventSetGraphicsIdByLocalIdAndMap: @ 805F1D8 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r4, r3, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805F20C + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F214 @ =gObjectEvents + adds r0, r1 + adds r1, r4, 0 + bl EventObjectSetGraphicsId +_0805F20C: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F214: .4byte gObjectEvents + thumb_func_end ObjectEventSetGraphicsIdByLocalIdAndMap + + thumb_func_start ObjectEventTurn +ObjectEventTurn: @ 805F218 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + bl ObjectEventSetDirection + ldrb r0, [r6, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _0805F25E + ldrb r0, [r6, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r5, _0805F264 @ =gSprites + adds r4, r5 + ldrb r0, [r6, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + ldrb r1, [r6, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0 + bl SeekSpriteAnim +_0805F25E: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805F264: .4byte gSprites + thumb_func_end ObjectEventTurn + + thumb_func_start ObjectEventTurnByLocalIdAndMap +ObjectEventTurnByLocalIdAndMap: @ 805F268 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r4, r3, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805F29C + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F2A4 @ =gObjectEvents + adds r0, r1 + adds r1, r4, 0 + bl ObjectEventTurn +_0805F29C: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F2A4: .4byte gObjectEvents + thumb_func_end ObjectEventTurnByLocalIdAndMap + + thumb_func_start PlayerObjectTurn +PlayerObjectTurn: @ 805F2A8 + push {lr} + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r0, 0x5] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0805F2C4 @ =gObjectEvents + adds r0, r2 + bl ObjectEventTurn + pop {r0} + bx r0 + .align 2, 0 +_0805F2C4: .4byte gObjectEvents + thumb_func_end PlayerObjectTurn + + thumb_func_start GetObjectEventGraphicsInfo +GetObjectEventGraphicsInfo: @ 805F2C8 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xEF + bls _0805F2E0 + adds r0, r1, 0 + adds r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + bl VarGetObjectEventGraphicsId + adds r1, r0, 0 +_0805F2E0: + cmp r1, 0x97 + bls _0805F2E6 + movs r1, 0x10 +_0805F2E6: + ldr r0, _0805F2F4 @ =gObjectEventGraphicsInfoPointers + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_0805F2F4: .4byte gObjectEventGraphicsInfoPointers + thumb_func_end GetObjectEventGraphicsInfo + + thumb_func_start ObjectEventHandleDynamicGraphicsId +ObjectEventHandleDynamicGraphicsId: @ 805F2F8 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x5] + cmp r0, 0xEF + bls _0805F30E + adds r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + bl VarGetObjectEventGraphicsId + strb r0, [r4, 0x5] +_0805F30E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end ObjectEventHandleDynamicGraphicsId + + thumb_func_start npc_by_local_id_and_map_set_field_1_bit_x20 +npc_by_local_id_and_map_set_field_1_bit_x20: @ 805F314 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r4, r3, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805F356 + ldr r2, _0805F360 @ =gObjectEvents + mov r0, sp + ldrb r0, [r0] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r0, 0x1 + adds r2, r4, 0 + ands r2, r0 + lsls r2, 5 + ldrb r3, [r1, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, 0x1] +_0805F356: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F360: .4byte gObjectEvents + thumb_func_end npc_by_local_id_and_map_set_field_1_bit_x20 + + thumb_func_start ObjectEventGetLocalIdAndMap +ObjectEventGetLocalIdAndMap: @ 805F364 + push {r4,lr} + ldrb r4, [r0, 0x8] + strb r4, [r1] + ldrb r1, [r0, 0x9] + strb r1, [r2] + ldrb r0, [r0, 0xA] + strb r0, [r3] + pop {r4} + pop {r0} + bx r0 + thumb_func_end ObjectEventGetLocalIdAndMap + + thumb_func_start sub_805F378 +sub_805F378: @ 805F378 + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl GetObjectEventIdByXY + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x10 + beq _0805F3A0 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F3A4 @ =gObjectEvents + adds r0, r1 + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_0805F3A0: + pop {r0} + bx r0 + .align 2, 0 +_0805F3A4: .4byte gObjectEvents + thumb_func_end sub_805F378 + + thumb_func_start sub_805F3A8 +sub_805F3A8: @ 805F3A8 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r4, r3, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805F3EE + mov r0, sp + ldrb r0, [r0] + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + ldr r0, _0805F3F8 @ =gObjectEvents + adds r2, r0 + ldrb r1, [r2, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F3FC @ =gSprites + adds r0, r1 + ldrb r1, [r2, 0x3] + movs r3, 0x4 + orrs r1, r3 + strb r1, [r2, 0x3] + adds r0, 0x43 + strb r4, [r0] +_0805F3EE: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F3F8: .4byte gObjectEvents +_0805F3FC: .4byte gSprites + thumb_func_end sub_805F3A8 + + thumb_func_start sub_805F400 +sub_805F400: @ 805F400 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805F43C + mov r0, sp + ldrb r0, [r0] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _0805F444 @ =gObjectEvents + adds r1, r0 + ldrb r2, [r1, 0x3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + strb r0, [r1, 0x3] + ldrb r0, [r1] + movs r2, 0x4 + orrs r0, r2 + strb r0, [r1] +_0805F43C: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0805F444: .4byte gObjectEvents + thumb_func_end sub_805F400 + + thumb_func_start sub_805F448 +sub_805F448: @ 805F448 + push {r4,r5,lr} + sub sp, 0x4 + ldr r4, [sp, 0x10] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 16 + lsrs r5, r3, 16 + lsls r4, 16 + lsrs r4, 16 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805F48C + ldr r2, _0805F494 @ =gObjectEvents + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F498 @ =gSprites + adds r0, r1 + strh r5, [r0, 0x24] + strh r4, [r0, 0x26] +_0805F48C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F494: .4byte gObjectEvents +_0805F498: .4byte gSprites + thumb_func_end sub_805F448 + + thumb_func_start gpu_pal_allocator_reset__manage_upper_four +gpu_pal_allocator_reset__manage_upper_four: @ 805F49C + push {lr} + bl FreeAllSpritePalettes + ldr r1, _0805F4AC @ =gReservedSpritePaletteCount + movs r0, 0xC + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_0805F4AC: .4byte gReservedSpritePaletteCount + thumb_func_end gpu_pal_allocator_reset__manage_upper_four + + thumb_func_start sub_805F4B0 +sub_805F4B0: @ 805F4B0 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl FindObjectEventPaletteIndexByTag + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, _0805F4D4 @ =0x000011ff + cmp r1, r0 + beq _0805F4CE + lsls r0, r1, 3 + ldr r1, _0805F4D8 @ =gUnknown_83A5158 + adds r0, r1 + bl sub_805F510 +_0805F4CE: + pop {r0} + bx r0 + .align 2, 0 +_0805F4D4: .4byte 0x000011ff +_0805F4D8: .4byte gUnknown_83A5158 + thumb_func_end sub_805F4B0 + + thumb_func_start sub_805F4DC +sub_805F4DC: @ 805F4DC + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + ldrh r0, [r5] + ldr r1, _0805F50C @ =0x000011ff + cmp r0, r1 + beq _0805F506 + adds r6, r1, 0 +_0805F4EC: + lsls r0, r4, 1 + adds r0, r5 + ldrh r0, [r0] + bl sub_805F4B0 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 1 + adds r0, r5 + ldrh r0, [r0] + cmp r0, r6 + bne _0805F4EC +_0805F506: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805F50C: .4byte 0x000011ff + thumb_func_end sub_805F4DC + + thumb_func_start sub_805F510 +sub_805F510: @ 805F510 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x4] + bl IndexOfSpritePaletteTag + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0805F52E + adds r0, r4, 0 + bl LoadSpritePalette + lsls r0, 24 + lsrs r0, 24 + b _0805F530 +_0805F52E: + movs r0, 0xFF +_0805F530: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805F510 + + thumb_func_start pal_patch_for_npc +pal_patch_for_npc: @ 805F538 + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r4, 24 + bl FindObjectEventPaletteIndexByTag + lsls r0, 24 + ldr r1, _0805F570 @ =gUnknown_83A5158 + lsrs r0, 21 + adds r0, r1 + ldr r0, [r0] + lsls r1, r4, 20 + movs r2, 0x80 + lsls r2, 17 + adds r1, r2 + lsrs r1, 16 + movs r2, 0x20 + bl LoadPalette + adds r0, r4, 0 + bl sub_8083598 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805F570: .4byte gUnknown_83A5158 + thumb_func_end pal_patch_for_npc + + thumb_func_start pal_patch_for_npc_range +pal_patch_for_npc_range: @ 805F574 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + cmp r4, r6 + bcs _0805F598 +_0805F584: + ldrh r0, [r5] + adds r1, r4, 0 + bl pal_patch_for_npc + adds r5, 0x2 + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, r6 + bcc _0805F584 +_0805F598: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end pal_patch_for_npc_range + + thumb_func_start FindObjectEventPaletteIndexByTag +FindObjectEventPaletteIndexByTag: @ 805F5A0 + push {r4-r6,lr} + lsls r0, 16 + lsrs r5, r0, 16 + movs r2, 0 + ldr r0, _0805F5C8 @ =gUnknown_83A5158 + ldrh r1, [r0, 0x4] + ldr r3, _0805F5CC @ =0x000011ff + adds r4, r0, 0 + cmp r1, r3 + beq _0805F5E0 + adds r6, r4, 0 + adds r1, r3, 0 +_0805F5B8: + lsls r0, r2, 3 + adds r0, r6 + ldrh r0, [r0, 0x4] + cmp r0, r5 + bne _0805F5D0 + adds r0, r2, 0 + b _0805F5E2 + .align 2, 0 +_0805F5C8: .4byte gUnknown_83A5158 +_0805F5CC: .4byte 0x000011ff +_0805F5D0: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 3 + adds r0, r4 + ldrh r0, [r0, 0x4] + cmp r0, r1 + bne _0805F5B8 +_0805F5E0: + movs r0, 0xFF +_0805F5E2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end FindObjectEventPaletteIndexByTag + + thumb_func_start npc_load_two_palettes__no_record +npc_load_two_palettes__no_record: @ 805F5E8 + push {r4-r6,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl pal_patch_for_npc + movs r3, 0 + ldr r1, _0805F630 @ =gUnknown_83A5208 + ldrh r0, [r1] + ldr r2, _0805F634 @ =0x000011ff + cmp r0, r2 + beq _0805F650 + ldr r0, _0805F638 @ =gUnknown_835B934 + adds r5, r0 + adds r6, r2, 0 +_0805F60C: + lsls r2, r3, 3 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r4 + bne _0805F640 + adds r1, 0x4 + adds r1, r2, r1 + ldr r0, _0805F63C @ =gUnknown_2037098 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + ldrb r1, [r5] + bl pal_patch_for_npc + b _0805F650 + .align 2, 0 +_0805F630: .4byte gUnknown_83A5208 +_0805F634: .4byte 0x000011ff +_0805F638: .4byte gUnknown_835B934 +_0805F63C: .4byte gUnknown_2037098 +_0805F640: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 3 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r6 + bne _0805F60C +_0805F650: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end npc_load_two_palettes__no_record + + thumb_func_start npc_load_two_palettes__and_record +npc_load_two_palettes__and_record: @ 805F658 + push {r4-r6,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, _0805F6A4 @ =gUnknown_203709A + strh r4, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl pal_patch_for_npc + movs r3, 0 + ldr r1, _0805F6A8 @ =gUnknown_83A5278 + ldrh r0, [r1] + ldr r2, _0805F6AC @ =0x000011ff + cmp r0, r2 + beq _0805F6C8 + ldr r0, _0805F6B0 @ =gUnknown_835B934 + adds r5, r0 + adds r6, r2, 0 +_0805F680: + lsls r2, r3, 3 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r4 + bne _0805F6B8 + adds r1, 0x4 + adds r1, r2, r1 + ldr r0, _0805F6B4 @ =gUnknown_2037098 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + ldrb r1, [r5] + bl pal_patch_for_npc + b _0805F6C8 + .align 2, 0 +_0805F6A4: .4byte gUnknown_203709A +_0805F6A8: .4byte gUnknown_83A5278 +_0805F6AC: .4byte 0x000011ff +_0805F6B0: .4byte gUnknown_835B934 +_0805F6B4: .4byte gUnknown_2037098 +_0805F6B8: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 3 + adds r0, r1 + ldrh r0, [r0] + cmp r0, r6 + bne _0805F680 +_0805F6C8: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end npc_load_two_palettes__and_record + + thumb_func_start sub_805F6D0 +sub_805F6D0: @ 805F6D0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0805F6DC @ =gUnknown_835B934 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0805F6DC: .4byte gUnknown_835B934 + thumb_func_end sub_805F6D0 + + thumb_func_start unref_sub_808EAC4 +unref_sub_808EAC4: @ 805F6E0 + push {r4,lr} + ldrh r3, [r0, 0x10] + strh r3, [r0, 0x14] + ldrh r4, [r0, 0x12] + strh r4, [r0, 0x16] + lsls r1, 16 + asrs r1, 16 + adds r1, r3 + strh r1, [r0, 0x10] + lsls r2, 16 + asrs r2, 16 + adds r2, r4 + strh r2, [r0, 0x12] + pop {r4} + pop {r0} + bx r0 + thumb_func_end unref_sub_808EAC4 + + thumb_func_start npc_coords_shift +npc_coords_shift: @ 805F700 + ldrh r3, [r0, 0x10] + strh r3, [r0, 0x14] + ldrh r3, [r0, 0x12] + strh r3, [r0, 0x16] + strh r1, [r0, 0x10] + strh r2, [r0, 0x12] + bx lr + thumb_func_end npc_coords_shift + + thumb_func_start npc_coords_set +npc_coords_set: @ 805F710 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 16 + lsrs r2, 16 + strh r1, [r0, 0x14] + strh r2, [r0, 0x16] + strh r1, [r0, 0x10] + strh r2, [r0, 0x12] + bx lr + thumb_func_end npc_coords_set + + thumb_func_start sub_805F724 +sub_805F724: @ 805F724 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + ldrb r1, [r6, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805F7C0 @ =gSprites + adds r7, r0, r1 + ldrb r0, [r6, 0x5] + bl GetObjectEventGraphicsInfo + mov r8, r0 + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl npc_coords_set + movs r1, 0x10 + ldrsh r0, [r6, r1] + movs r2, 0x12 + ldrsh r1, [r6, r2] + adds r2, r7, 0 + adds r2, 0x20 + adds r3, r7, 0 + adds r3, 0x22 + bl sub_8063B1C + mov r1, r8 + ldrh r0, [r1, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r7, 0 + adds r1, 0x28 + strb r0, [r1] + mov r2, r8 + ldrh r0, [r2, 0xA] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r2, r7, 0 + adds r2, 0x29 + strb r0, [r2] + ldrh r0, [r7, 0x20] + adds r0, 0x8 + strh r0, [r7, 0x20] + ldrh r1, [r7, 0x22] + adds r1, 0x10 + movs r0, 0 + ldrsb r0, [r2, r0] + adds r0, r1 + strh r0, [r7, 0x22] + adds r0, r6, 0 + bl sub_805EFF4 + ldrb r0, [r6, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _0805F7B6 + bl CameraObjectReset1 +_0805F7B6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805F7C0: .4byte gSprites + thumb_func_end sub_805F724 + + thumb_func_start sub_805F7C4 +sub_805F7C4: @ 805F7C4 + push {r4,r5,lr} + sub sp, 0x4 + ldr r4, [sp, 0x10] + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 16 + lsrs r5, r3, 16 + lsls r4, 16 + lsrs r4, 16 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805F80C + lsls r1, r5, 16 + lsls r2, r4, 16 + mov r0, sp + ldrb r3, [r0] + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + ldr r3, _0805F814 @ =gObjectEvents + adds r0, r3 + movs r3, 0xE0 + lsls r3, 11 + adds r1, r3 + asrs r1, 16 + adds r2, r3 + asrs r2, 16 + bl sub_805F724 +_0805F80C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F814: .4byte gObjectEvents + thumb_func_end sub_805F7C4 + + thumb_func_start npc_coords_shift_still +npc_coords_shift_still: @ 805F818 + push {lr} + movs r2, 0x10 + ldrsh r1, [r0, r2] + movs r3, 0x12 + ldrsh r2, [r0, r3] + bl npc_coords_shift + pop {r0} + bx r0 + thumb_func_end npc_coords_shift_still + + thumb_func_start UpdateObjectEventCoordsForCameraUpdate +UpdateObjectEventCoordsForCameraUpdate: @ 805F82C + push {r4,r5,lr} + ldr r2, _0805F88C @ =gCamera + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0805F884 + movs r3, 0 + ldr r5, _0805F890 @ =gObjectEvents + movs r0, 0x4 + ldrsh r4, [r2, r0] + movs r0, 0x8 + ldrsh r1, [r2, r0] +_0805F846: + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r5 + ldrb r0, [r2] + lsls r0, 31 + cmp r0, 0 + beq _0805F87A + ldrh r0, [r2, 0xC] + subs r0, r4 + strh r0, [r2, 0xC] + ldrh r0, [r2, 0xE] + subs r0, r1 + strh r0, [r2, 0xE] + ldrh r0, [r2, 0x10] + subs r0, r4 + strh r0, [r2, 0x10] + ldrh r0, [r2, 0x12] + subs r0, r1 + strh r0, [r2, 0x12] + ldrh r0, [r2, 0x14] + subs r0, r4 + strh r0, [r2, 0x14] + ldrh r0, [r2, 0x16] + subs r0, r1 + strh r0, [r2, 0x16] +_0805F87A: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _0805F846 +_0805F884: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F88C: .4byte gCamera +_0805F890: .4byte gObjectEvents + thumb_func_end UpdateObjectEventCoordsForCameraUpdate + + thumb_func_start GetObjectEventIdByXYZ +GetObjectEventIdByXYZ: @ 805F894 + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + lsrs r7, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 24 + lsrs r5, r2, 24 + movs r4, 0 + ldr r0, _0805F8E0 @ =gObjectEvents + mov r8, r0 +_0805F8AC: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + mov r2, r8 + adds r1, r0, r2 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _0805F8E4 + movs r2, 0x10 + ldrsh r0, [r1, r2] + cmp r0, r7 + bne _0805F8E4 + movs r2, 0x12 + ldrsh r0, [r1, r2] + cmp r0, r6 + bne _0805F8E4 + adds r0, r1, 0 + adds r1, r5, 0 + bl ObjectEventDoesZCoordMatch + lsls r0, 24 + cmp r0, 0 + beq _0805F8E4 + adds r0, r4, 0 + b _0805F8F0 + .align 2, 0 +_0805F8E0: .4byte gObjectEvents +_0805F8E4: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0805F8AC + movs r0, 0x10 +_0805F8F0: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GetObjectEventIdByXYZ + + thumb_func_start ObjectEventDoesZCoordMatch +ObjectEventDoesZCoordMatch: @ 805F8FC + push {lr} + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r0, 0xB] + movs r0, 0xF + ands r0, r2 + cmp r0, 0 + beq _0805F91C + cmp r1, 0 + beq _0805F91C + lsls r0, r2, 28 + lsrs r0, 28 + cmp r0, r1 + beq _0805F91C + movs r0, 0 + b _0805F91E +_0805F91C: + movs r0, 0x1 +_0805F91E: + pop {r1} + bx r1 + thumb_func_end ObjectEventDoesZCoordMatch + + thumb_func_start UpdateObjectEventsForCameraUpdate +UpdateObjectEventsForCameraUpdate: @ 805F924 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + bl UpdateObjectEventCoordsForCameraUpdate + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_805EC30 + bl RemoveObjectEventsOutsideView + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end UpdateObjectEventsForCameraUpdate + + thumb_func_start AddCameraObject +AddCameraObject: @ 805F950 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, _0805F98C @ =gUnknown_835B944 + movs r1, 0 + movs r2, 0 + movs r3, 0x4 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805F990 @ =gSprites + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r2, 0x3E + adds r2, r1 + mov r12, r2 + ldrb r2, [r2] + movs r3, 0x4 + orrs r2, r3 + mov r3, r12 + strb r2, [r3] + strh r4, [r1, 0x2E] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805F98C: .4byte gUnknown_835B944 +_0805F990: .4byte gSprites + thumb_func_end AddCameraObject + + thumb_func_start ObjectCB_CameraObject +ObjectCB_CameraObject: @ 805F994 + push {r4,r5,lr} + sub sp, 0xC + mov r2, sp + ldr r1, _0805F9B8 @ =gUnknown_835B95C + ldm r1!, {r3-r5} + stm r2!, {r3-r5} + movs r2, 0x30 + ldrsh r1, [r0, r2] + lsls r1, 2 + add r1, sp + ldr r1, [r1] + bl _call_via_r1 + add sp, 0xC + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805F9B8: .4byte gUnknown_835B95C + thumb_func_end ObjectCB_CameraObject + + thumb_func_start CameraObject_0 +CameraObject_0: @ 805F9BC + push {lr} + ldr r3, _0805F9F4 @ =gSprites + movs r1, 0x2E + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + ldrh r1, [r1, 0x20] + strh r1, [r0, 0x20] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + ldrh r1, [r1, 0x22] + strh r1, [r0, 0x22] + adds r3, r0, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r3] + movs r1, 0x1 + strh r1, [r0, 0x30] + bl CameraObject_1 + pop {r0} + bx r0 + .align 2, 0 +_0805F9F4: .4byte gSprites + thumb_func_end CameraObject_0 + + thumb_func_start CameraObject_1 +CameraObject_1: @ 805F9F8 + push {r4,r5,lr} + ldr r3, _0805FA2C @ =gSprites + movs r1, 0x2E + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + ldrh r3, [r1, 0x22] + ldrh r2, [r0, 0x20] + ldrh r4, [r1, 0x20] + movs r5, 0x20 + ldrsh r1, [r1, r5] + subs r1, r2 + strh r1, [r0, 0x32] + ldrh r2, [r0, 0x22] + lsls r1, r3, 16 + asrs r1, 16 + subs r1, r2 + strh r1, [r0, 0x34] + strh r4, [r0, 0x20] + strh r3, [r0, 0x22] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805FA2C: .4byte gSprites + thumb_func_end CameraObject_1 + + thumb_func_start CameraObject_2 +CameraObject_2: @ 805FA30 + push {r4,lr} + ldr r4, _0805FA5C @ =gSprites + movs r1, 0x2E + ldrsh r2, [r0, r1] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldrh r1, [r1, 0x20] + movs r3, 0 + strh r1, [r0, 0x20] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r4 + ldrh r1, [r1, 0x22] + strh r1, [r0, 0x22] + strh r3, [r0, 0x32] + strh r3, [r0, 0x34] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805FA5C: .4byte gSprites + thumb_func_end CameraObject_2 + + thumb_func_start FindCameraObject +FindCameraObject: @ 805FA60 + push {r4,r5,lr} + movs r3, 0 + ldr r4, _0805FA8C @ =gSprites + adds r5, r4, 0 + adds r5, 0x1C +_0805FA6A: + lsls r0, r3, 4 + adds r0, r3 + lsls r1, r0, 2 + adds r2, r1, r4 + adds r0, r2, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0805FA94 + adds r0, r1, r5 + ldr r1, [r0] + ldr r0, _0805FA90 @ =ObjectCB_CameraObject + cmp r1, r0 + bne _0805FA94 + adds r0, r2, 0 + b _0805FAA0 + .align 2, 0 +_0805FA8C: .4byte gSprites +_0805FA90: .4byte ObjectCB_CameraObject +_0805FA94: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3F + bls _0805FA6A + movs r0, 0 +_0805FAA0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end FindCameraObject + + thumb_func_start CameraObjectReset1 +CameraObjectReset1: @ 805FAA8 + push {lr} + bl FindCameraObject + adds r2, r0, 0 + cmp r2, 0 + beq _0805FAC0 + movs r0, 0 + strh r0, [r2, 0x30] + ldr r1, [r2, 0x1C] + adds r0, r2, 0 + bl _call_via_r1 +_0805FAC0: + pop {r0} + bx r0 + thumb_func_end CameraObjectReset1 + + thumb_func_start CameraObjectSetFollowedObjectId +CameraObjectSetFollowedObjectId: @ 805FAC4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl FindCameraObject + cmp r0, 0 + beq _0805FAD8 + strh r4, [r0, 0x2E] + bl CameraObjectReset1 +_0805FAD8: + pop {r4} + pop {r0} + bx r0 + thumb_func_end CameraObjectSetFollowedObjectId + + thumb_func_start CameraObjectGetFollowedObjectId +CameraObjectGetFollowedObjectId: @ 805FAE0 + push {lr} + bl FindCameraObject + cmp r0, 0 + beq _0805FAF2 + ldrh r0, [r0, 0x2E] + lsls r0, 24 + lsrs r0, 24 + b _0805FAF4 +_0805FAF2: + movs r0, 0x40 +_0805FAF4: + pop {r1} + bx r1 + thumb_func_end CameraObjectGetFollowedObjectId + + thumb_func_start CameraObjectReset2 +CameraObjectReset2: @ 805FAF8 + push {lr} + bl FindCameraObject + movs r1, 0x2 + strh r1, [r0, 0x30] + pop {r0} + bx r0 + thumb_func_end CameraObjectReset2 + + thumb_func_start CopySprite +CopySprite: @ 805FB08 + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r12, r0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 16 + lsrs r6, r2, 16 + lsls r3, 24 + lsrs r7, r3, 24 + movs r5, 0 + ldr r1, _0805FB50 @ =gSprites +_0805FB22: + lsls r0, r5, 4 + adds r0, r5 + lsls r0, 2 + adds r4, r0, r1 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0805FB54 + adds r0, r4, 0 + mov r1, r12 + movs r2, 0x44 + bl memcpy + mov r0, r8 + strh r0, [r4, 0x20] + strh r6, [r4, 0x22] + adds r0, r4, 0 + adds r0, 0x43 + strb r7, [r0] + b _0805FB5E + .align 2, 0 +_0805FB50: .4byte gSprites +_0805FB54: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3F + bls _0805FB22 +_0805FB5E: + adds r0, r5, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CopySprite + + thumb_func_start obj_unfreeze +obj_unfreeze: @ 805FB6C + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r12, r0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 16 + lsrs r6, r2, 16 + lsls r3, 24 + lsrs r7, r3, 24 + movs r5, 0x3F + ldr r3, _0805FBC0 @ =gSprites + movs r2, 0x1 + negs r2, r2 +_0805FB8A: + lsls r0, r5, 16 + asrs r1, r0, 16 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r4, r0, r3 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0805FBC4 + adds r0, r4, 0 + mov r1, r12 + movs r2, 0x44 + bl memcpy + mov r0, r8 + strh r0, [r4, 0x20] + strh r6, [r4, 0x22] + adds r0, r4, 0 + adds r0, 0x43 + strb r7, [r0] + lsls r0, r5, 24 + lsrs r0, 24 + b _0805FBD2 + .align 2, 0 +_0805FBC0: .4byte gSprites +_0805FBC4: + subs r0, r1, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + asrs r0, 16 + cmp r0, r2 + bgt _0805FB8A + movs r0, 0x40 +_0805FBD2: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end obj_unfreeze + + thumb_func_start ObjectEventSetDirection +ObjectEventSetDirection: @ 805FBDC + push {r4,lr} + adds r3, r0, 0 + lsls r1, 24 + lsrs r2, r1, 24 + adds r4, r2, 0 + ldrb r0, [r3, 0x18] + lsls r0, 28 + lsrs r0, 28 + adds r1, r3, 0 + adds r1, 0x20 + strb r0, [r1] + ldrb r0, [r3, 0x1] + lsls r0, 30 + cmp r0, 0 + blt _0805FC0C + movs r0, 0xF + adds r1, r2, 0 + ands r1, r0 + ldrb r2, [r3, 0x18] + movs r0, 0x10 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x18] +_0805FC0C: + lsls r2, r4, 4 + ldrb r1, [r3, 0x18] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r3, 0x18] + pop {r4} + pop {r0} + bx r0 + thumb_func_end ObjectEventSetDirection + + thumb_func_start GetObjectEventScriptPointerByLocalIdAndMap +GetObjectEventScriptPointerByLocalIdAndMap: @ 805FC20 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + bl GetObjectEventTemplateByLocalIdAndMap + ldr r0, [r0, 0x10] + pop {r1} + bx r1 + thumb_func_end GetObjectEventScriptPointerByLocalIdAndMap + + thumb_func_start GetObjectEventScriptPointerByObjectEventId +GetObjectEventScriptPointerByObjectEventId: @ 805FC38 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0805FC58 @ =gObjectEvents + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r0, [r2, 0x8] + ldrb r1, [r2, 0x9] + ldrb r2, [r2, 0xA] + bl GetObjectEventScriptPointerByLocalIdAndMap + pop {r1} + bx r1 + .align 2, 0 +_0805FC58: .4byte gObjectEvents + thumb_func_end GetObjectEventScriptPointerByObjectEventId + + thumb_func_start GetObjectEventFlagIdByLocalIdAndMap +GetObjectEventFlagIdByLocalIdAndMap: @ 805FC5C + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + bl GetObjectEventTemplateByLocalIdAndMap + ldrh r0, [r0, 0x14] + pop {r1} + bx r1 + thumb_func_end GetObjectEventFlagIdByLocalIdAndMap + + thumb_func_start GetObjectEventFlagIdByObjectEventId +GetObjectEventFlagIdByObjectEventId: @ 805FC74 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0805FC98 @ =gObjectEvents + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r0, [r2, 0x8] + ldrb r1, [r2, 0x9] + ldrb r2, [r2, 0xA] + bl GetObjectEventFlagIdByLocalIdAndMap + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_0805FC98: .4byte gObjectEvents + thumb_func_end GetObjectEventFlagIdByObjectEventId + + thumb_func_start sub_805FC9C +sub_805FC9C: @ 805FC9C + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805FCD0 + ldr r2, _0805FCCC @ =gObjectEvents + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x7] + b _0805FCD2 + .align 2, 0 +_0805FCCC: .4byte gObjectEvents +_0805FCD0: + movs r0, 0xFF +_0805FCD2: + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_805FC9C + + thumb_func_start sub_805FCD8 +sub_805FCD8: @ 805FCD8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + bl GetObjectEventTemplateByLocalIdAndMap + ldrh r0, [r0, 0xC] + pop {r1} + bx r1 + thumb_func_end sub_805FCD8 + + thumb_func_start sub_805FCF0 +sub_805FCF0: @ 805FCF0 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805FD04 @ =gObjectEvents + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x7] + bx lr + .align 2, 0 +_0805FD04: .4byte gObjectEvents + thumb_func_end sub_805FCF0 + + thumb_func_start sub_805FD08 +sub_805FD08: @ 805FD08 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805FD3C + ldr r2, _0805FD38 @ =gObjectEvents + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1D] + b _0805FD3E + .align 2, 0 +_0805FD38: .4byte gObjectEvents +_0805FD3C: + movs r0, 0xFF +_0805FD3E: + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_805FD08 + + thumb_func_start ObjectEventGetBerryTreeId +ObjectEventGetBerryTreeId: @ 805FD44 + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805FD58 @ =gObjectEvents + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x1D] + bx lr + .align 2, 0 +_0805FD58: .4byte gObjectEvents + thumb_func_end ObjectEventGetBerryTreeId + + thumb_func_start GetObjectEventTemplateByLocalIdAndMap +GetObjectEventTemplateByLocalIdAndMap: @ 805FD5C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsls r2, 24 + lsrs r2, 24 + ldr r0, _0805FD8C @ =gSaveBlock1Ptr + ldr r1, [r0] + movs r0, 0x5 + ldrsb r0, [r1, r0] + cmp r0, r3 + bne _0805FD94 + movs r0, 0x4 + ldrsb r0, [r1, r0] + cmp r0, r2 + bne _0805FD94 + movs r0, 0x8E + lsls r0, 4 + adds r1, r0 + ldr r0, _0805FD90 @ =gMapHeader + ldr r0, [r0, 0x4] + b _0805FDA0 + .align 2, 0 +_0805FD8C: .4byte gSaveBlock1Ptr +_0805FD90: .4byte gMapHeader +_0805FD94: + adds r0, r2, 0 + adds r1, r3, 0 + bl Overworld_GetMapHeaderByGroupAndId + ldr r0, [r0, 0x4] + ldr r1, [r0, 0x4] +_0805FDA0: + ldrb r2, [r0] + adds r0, r4, 0 + bl FindObjectEventTemplateInArrayByLocalId + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetObjectEventTemplateByLocalIdAndMap + + thumb_func_start FindObjectEventTemplateInArrayByLocalId +FindObjectEventTemplateInArrayByLocalId: @ 805FDB0 + push {r4,r5,lr} + adds r5, r1, 0 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r2, 24 + lsrs r2, 24 + movs r1, 0 + cmp r1, r2 + bcs _0805FDDE +_0805FDC2: + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r3, r0, r5 + ldrb r0, [r3] + cmp r0, r4 + bne _0805FDD4 + adds r0, r3, 0 + b _0805FDE0 +_0805FDD4: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + bcc _0805FDC2 +_0805FDDE: + movs r0, 0 +_0805FDE0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end FindObjectEventTemplateInArrayByLocalId + + thumb_func_start sub_805FDE8 +sub_805FDE8: @ 805FDE8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + ldrb r0, [r4, 0x9] + ldr r1, _0805FE0C @ =gSaveBlock1Ptr + ldr r2, [r1] + movs r1, 0x5 + ldrsb r1, [r2, r1] + cmp r0, r1 + bne _0805FE50 + ldrb r1, [r4, 0xA] + movs r0, 0x4 + ldrsb r0, [r2, r0] + cmp r1, r0 + beq _0805FE18 + b _0805FE50 + .align 2, 0 +_0805FE0C: .4byte gSaveBlock1Ptr +_0805FE10: + mov r1, r8 + adds r0, r5, r1 + adds r0, r3, r0 + b _0805FE52 +_0805FE18: + movs r6, 0 + adds r3, r2, 0 + movs r0, 0x8E + lsls r0, 4 + mov r8, r0 + ldrb r0, [r4, 0x8] + mov r12, r0 + mov r0, r8 + adds r2, r3, r0 + movs r5, 0 + adds r7, r1, 0 +_0805FE2E: + ldrb r1, [r2] + cmp r12, r1 + bne _0805FE46 + ldrb r1, [r4, 0x9] + movs r0, 0x5 + ldrsb r0, [r3, r0] + cmp r1, r0 + bne _0805FE46 + movs r0, 0x4 + ldrsb r0, [r3, r0] + cmp r7, r0 + beq _0805FE10 +_0805FE46: + adds r2, 0x18 + adds r5, 0x18 + adds r6, 0x1 + cmp r6, 0x3F + ble _0805FE2E +_0805FE50: + movs r0, 0 +_0805FE52: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805FDE8 + + thumb_func_start sub_805FE5C +sub_805FE5C: @ 805FE5C + push {r4,lr} + adds r4, r0, 0 + bl sub_805FDE8 + adds r1, r0, 0 + cmp r1, 0 + beq _0805FE76 + ldrh r0, [r4, 0x10] + subs r0, 0x7 + strh r0, [r1, 0x4] + ldrh r0, [r4, 0x12] + subs r0, 0x7 + strh r0, [r1, 0x6] +_0805FE76: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805FE5C + + thumb_func_start sub_805FE7C +sub_805FE7C: @ 805FE7C + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_805FDE8 + cmp r0, 0 + beq _0805FE8C + strb r4, [r0, 0x9] +_0805FE8C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805FE7C + + thumb_func_start sub_805FE94 +sub_805FE94: @ 805FE94 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0805FEC2 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805FEC8 @ =gObjectEvents + adds r0, r1 + bl sub_805FE5C +_0805FEC2: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0805FEC8: .4byte gObjectEvents + thumb_func_end sub_805FE94 + + thumb_func_start npc_paltag_set_load +npc_paltag_set_load: @ 805FECC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl gpu_pal_allocator_reset__manage_upper_four + ldr r1, _0805FF04 @ =gUnknown_203709A + ldr r2, _0805FF08 @ =0x000011ff + adds r0, r2, 0 + strh r0, [r1] + ldr r2, _0805FF0C @ =gUnknown_2037098 + strb r4, [r2] + cmp r4, 0x1 + bne _0805FF18 + ldr r1, _0805FF10 @ =gUnknown_83A5330 + ldrb r0, [r2] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + movs r2, 0x6 + bl pal_patch_for_npc_range + ldr r1, _0805FF14 @ =gReservedSpritePaletteCount + movs r0, 0x8 + strb r0, [r1] + b _0805FF2A + .align 2, 0 +_0805FF04: .4byte gUnknown_203709A +_0805FF08: .4byte 0x000011ff +_0805FF0C: .4byte gUnknown_2037098 +_0805FF10: .4byte gUnknown_83A5330 +_0805FF14: .4byte gReservedSpritePaletteCount +_0805FF18: + ldr r0, _0805FF30 @ =gUnknown_83A5330 + ldrb r1, [r2] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + movs r1, 0 + movs r2, 0xA + bl pal_patch_for_npc_range +_0805FF2A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805FF30: .4byte gUnknown_83A5330 + thumb_func_end npc_paltag_set_load + + thumb_func_start npc_paltag_by_palslot +npc_paltag_by_palslot: @ 805FF34 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x9 + bhi _0805FF70 + ldr r1, _0805FF50 @ =gUnknown_83A5330 + ldr r0, _0805FF54 @ =gUnknown_2037098 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r0, r2, 1 + b _0805FF64 + .align 2, 0 +_0805FF50: .4byte gUnknown_83A5330 +_0805FF54: .4byte gUnknown_2037098 +_0805FF58: + adds r1, r4, 0x4 + adds r1, r2, r1 + ldr r0, _0805FF6C @ =gUnknown_2037098 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 1 +_0805FF64: + adds r0, r1 + ldrh r0, [r0] + b _0805FFA2 + .align 2, 0 +_0805FF6C: .4byte gUnknown_2037098 +_0805FF70: + movs r3, 0 + ldr r0, _0805FFA8 @ =gUnknown_83A5278 + ldrh r1, [r0] + ldr r2, _0805FFAC @ =0x000011ff + adds r4, r0, 0 + cmp r1, r2 + beq _0805FFA0 + adds r6, r4, 0 + ldr r0, _0805FFB0 @ =gUnknown_203709A + ldrh r1, [r0] + adds r5, r2, 0 +_0805FF86: + lsls r2, r3, 3 + adds r0, r2, r6 + ldrh r0, [r0] + cmp r0, r1 + beq _0805FF58 + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + lsls r0, r3, 3 + adds r0, r4 + ldrh r0, [r0] + cmp r0, r5 + bne _0805FF86 +_0805FFA0: + ldr r0, _0805FFAC @ =0x000011ff +_0805FFA2: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805FFA8: .4byte gUnknown_83A5278 +_0805FFAC: .4byte 0x000011ff +_0805FFB0: .4byte gUnknown_203709A + thumb_func_end npc_paltag_by_palslot + + thumb_func_start sub_805FFB4 +sub_805FFB4: @ 805FFB4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0805FFD0 @ =gObjectEvents + adds r0, r2 + ldr r2, _0805FFD4 @ =sub_805FFD8 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_0805FFD0: .4byte gObjectEvents +_0805FFD4: .4byte sub_805FFD8 + thumb_func_end sub_805FFB4 + + thumb_func_start sub_805FFD8 +sub_805FFD8: @ 805FFD8 + movs r0, 0 + bx lr + thumb_func_end sub_805FFD8 + + thumb_func_start sub_805FFDC +sub_805FFDC: @ 805FFDC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0805FFF8 @ =gObjectEvents + adds r0, r2 + ldr r2, _0805FFFC @ =sub_8060000 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_0805FFF8: .4byte gObjectEvents +_0805FFFC: .4byte sub_8060000 + thumb_func_end sub_805FFDC + + thumb_func_start sub_8060000 +sub_8060000: @ 8060000 + push {r4,lr} + ldr r3, _0806001C @ =gUnknown_83A6018 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806001C: .4byte gUnknown_83A6018 + thumb_func_end sub_8060000 + + thumb_func_start sub_8060020 +sub_8060020: @ 8060020 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806003C @ =gObjectEvents + adds r0, r2 + ldr r2, _08060040 @ =sub_8060044 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_0806003C: .4byte gObjectEvents +_08060040: .4byte sub_8060044 + thumb_func_end sub_8060020 + + thumb_func_start sub_8060044 +sub_8060044: @ 8060044 + push {r4,lr} + ldr r3, _08060060 @ =gUnknown_83A6034 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060060: .4byte gUnknown_83A6034 + thumb_func_end sub_8060044 + + thumb_func_start sub_8060064 +sub_8060064: @ 8060064 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060064 + + thumb_func_start sub_8060078 +sub_8060078: @ 8060078 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060078 + + thumb_func_start sub_80600A4 +sub_80600A4: @ 80600A4 + push {r4-r6,lr} + adds r6, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _080600D8 + ldr r5, _080600D4 @ =gUnknown_83A6000 + bl Random + movs r4, 0x3 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r5 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r6, 0 + bl SetObjectEventStepTimer + strh r4, [r6, 0x30] + movs r0, 0x1 + b _080600DA + .align 2, 0 +_080600D4: .4byte gUnknown_83A6000 +_080600D8: + movs r0, 0 +_080600DA: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80600A4 + + thumb_func_start sub_80600E0 +sub_80600E0: @ 80600E0 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _080600F4 + movs r0, 0 + b _080600FA +_080600F4: + movs r0, 0x4 + strh r0, [r4, 0x30] + movs r0, 0x1 +_080600FA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80600E0 + + thumb_func_start sub_8060100 +sub_8060100: @ 8060100 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _08060148 @ =gUnknown_83A6050 + mov r0, sp + movs r2, 0x4 + bl memcpy + bl Random + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r4, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x5 + strh r0, [r6, 0x30] + adds r0, r5, 0 + adds r1, r4, 0 + bl npc_block_way__next_tile + lsls r0, 24 + cmp r0, 0 + beq _0806013E + movs r0, 0x1 + strh r0, [r6, 0x30] +_0806013E: + movs r0, 0x1 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08060148: .4byte gUnknown_83A6050 + thumb_func_end sub_8060100 + + thumb_func_start sub_806014C +sub_806014C: @ 806014C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x6 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806014C + + thumb_func_start sub_806017C +sub_806017C: @ 806017C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F2C + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x6 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806017C + + thumb_func_start sub_80601AC +sub_80601AC: @ 80601AC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _080601CA + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_080601CA: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80601AC + + thumb_func_start ObjectEventIsTrainerAndCloseToPlayer +ObjectEventIsTrainerAndCloseToPlayer: @ 80601D4 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r0, 0x80 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _08060240 + ldrb r0, [r5, 0x7] + cmp r0, 0x1 + beq _080601F0 + cmp r0, 0x3 + bne _08060240 +_080601F0: + mov r7, sp + adds r7, 0x2 + mov r0, sp + adds r1, r7, 0 + bl PlayerGetDestCoords + ldrh r2, [r5, 0x10] + ldrh r4, [r5, 0x12] + ldrb r1, [r5, 0x1D] + subs r3, r2, r1 + subs r0, r4, r1 + lsls r0, 16 + lsrs r5, r0, 16 + adds r2, r1, r2 + lsls r2, 16 + lsrs r2, 16 + adds r1, r4 + lsls r1, 16 + lsrs r6, r1, 16 + mov r0, sp + lsls r3, 16 + asrs r3, 16 + movs r1, 0 + ldrsh r4, [r0, r1] + cmp r3, r4 + bgt _08060240 + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, r4 + blt _08060240 + lsls r0, r5, 16 + asrs r0, 16 + movs r2, 0 + ldrsh r1, [r7, r2] + cmp r0, r1 + bgt _08060240 + lsls r0, r6, 16 + asrs r0, 16 + cmp r0, r1 + bge _08060244 +_08060240: + movs r0, 0 + b _08060246 +_08060244: + movs r0, 0x1 +_08060246: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end ObjectEventIsTrainerAndCloseToPlayer + + thumb_func_start GetRegularRunningPastFacingDirection +GetRegularRunningPastFacingDirection: @ 8060250 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r0, r1, 16 + lsls r2, 16 + lsls r3, 16 + cmp r2, r3 + ble _0806026E + movs r2, 0x4 + lsls r0, r4, 16 + cmp r0, 0 + bge _08060278 + movs r2, 0x3 + b _08060278 +_0806026E: + movs r2, 0x1 + lsls r0, 16 + cmp r0, 0 + bge _08060278 + movs r2, 0x2 +_08060278: + adds r0, r2, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetRegularRunningPastFacingDirection + + thumb_func_start GetNorthSouthRunningPastFacingDirection +GetNorthSouthRunningPastFacingDirection: @ 8060280 + push {lr} + movs r0, 0x1 + lsls r1, 16 + cmp r1, 0 + bge _0806028C + movs r0, 0x2 +_0806028C: + pop {r1} + bx r1 + thumb_func_end GetNorthSouthRunningPastFacingDirection + + thumb_func_start GetEastWestRunningPastFacingDirection +GetEastWestRunningPastFacingDirection: @ 8060290 + push {lr} + movs r1, 0x4 + lsls r0, 16 + cmp r0, 0 + bge _0806029C + movs r1, 0x3 +_0806029C: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end GetEastWestRunningPastFacingDirection + + thumb_func_start GetNorthEastRunningPastFacingDirection +GetNorthEastRunningPastFacingDirection: @ 80602A4 + push {r4-r7,lr} + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 16 + asrs r7, r3, 16 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetRegularRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080602E0 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetEastWestRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _080602FA + b _080602F8 +_080602E0: + cmp r0, 0x4 + bne _080602FA + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetNorthSouthRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080602FA +_080602F8: + movs r0, 0x2 +_080602FA: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GetNorthEastRunningPastFacingDirection + + thumb_func_start GetNorthWestRunningPastFacingDirection +GetNorthWestRunningPastFacingDirection: @ 8060300 + push {r4-r7,lr} + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 16 + asrs r7, r3, 16 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetRegularRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0806033C + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetEastWestRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _08060356 + b _08060354 +_0806033C: + cmp r0, 0x3 + bne _08060356 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetNorthSouthRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08060356 +_08060354: + movs r0, 0x2 +_08060356: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GetNorthWestRunningPastFacingDirection + + thumb_func_start GetSouthEastRunningPastFacingDirection +GetSouthEastRunningPastFacingDirection: @ 806035C + push {r4-r7,lr} + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 16 + asrs r7, r3, 16 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetRegularRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08060398 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetEastWestRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _080603B2 + b _080603B0 +_08060398: + cmp r0, 0x4 + bne _080603B2 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetNorthSouthRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080603B2 +_080603B0: + movs r0, 0x1 +_080603B2: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GetSouthEastRunningPastFacingDirection + + thumb_func_start GetSouthWestRunningPastFacingDirection +GetSouthWestRunningPastFacingDirection: @ 80603B8 + push {r4-r7,lr} + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r5, r1, 16 + lsls r2, 16 + asrs r6, r2, 16 + lsls r3, 16 + asrs r7, r3, 16 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetRegularRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080603F4 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetEastWestRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0806040E + b _0806040C +_080603F4: + cmp r0, 0x3 + bne _0806040E + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl GetNorthSouthRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0806040E +_0806040C: + movs r0, 0x1 +_0806040E: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GetSouthWestRunningPastFacingDirection + + thumb_func_start GetNonEastRunningPastFacingDirection +GetNonEastRunningPastFacingDirection: @ 8060414 + push {r4-r7,lr} + lsls r0, 16 + asrs r7, r0, 16 + lsls r1, 16 + asrs r6, r1, 16 + lsls r2, 16 + asrs r5, r2, 16 + lsls r3, 16 + asrs r4, r3, 16 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl GetRegularRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _0806044A + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl GetNorthSouthRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 +_0806044A: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GetNonEastRunningPastFacingDirection + + thumb_func_start GetNonWestRunningPastFacingDirection +GetNonWestRunningPastFacingDirection: @ 8060450 + push {r4-r7,lr} + lsls r0, 16 + asrs r7, r0, 16 + lsls r1, 16 + asrs r6, r1, 16 + lsls r2, 16 + asrs r5, r2, 16 + lsls r3, 16 + asrs r4, r3, 16 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl GetRegularRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _08060486 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl GetNorthSouthRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 +_08060486: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GetNonWestRunningPastFacingDirection + + thumb_func_start GetNonSouthRunningPastFacingDirection +GetNonSouthRunningPastFacingDirection: @ 806048C + push {r4-r7,lr} + lsls r0, 16 + asrs r7, r0, 16 + lsls r1, 16 + asrs r6, r1, 16 + lsls r2, 16 + asrs r5, r2, 16 + lsls r3, 16 + asrs r4, r3, 16 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl GetRegularRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080604C2 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl GetEastWestRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 +_080604C2: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GetNonSouthRunningPastFacingDirection + + thumb_func_start GetNonNorthRunningPastFacingDirection +GetNonNorthRunningPastFacingDirection: @ 80604C8 + push {r4-r7,lr} + lsls r0, 16 + asrs r7, r0, 16 + lsls r1, 16 + asrs r6, r1, 16 + lsls r2, 16 + asrs r5, r2, 16 + lsls r3, 16 + asrs r4, r3, 16 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl GetRegularRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _080604FE + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl GetEastWestRunningPastFacingDirection + lsls r0, 24 + lsrs r0, 24 +_080604FE: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GetNonNorthRunningPastFacingDirection + + thumb_func_start GetRunningPastFacingDirection +GetRunningPastFacingDirection: @ 8060504 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + bne _0806051C + movs r0, 0 + b _08060580 +_0806051C: + mov r5, sp + adds r5, 0x2 + mov r0, sp + adds r1, r5, 0 + bl PlayerGetDestCoords + mov r2, sp + mov r0, sp + ldrh r0, [r0] + ldrh r1, [r4, 0x10] + subs r0, r1 + strh r0, [r2] + ldrh r0, [r5] + ldrh r1, [r4, 0x12] + subs r0, r1 + strh r0, [r5] + mov r0, sp + ldrh r3, [r5] + ldrh r2, [r0] + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _08060550 + negs r0, r0 + lsls r0, 16 + lsrs r2, r0, 16 +_08060550: + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0 + bge _0806055E + negs r0, r0 + lsls r0, 16 + lsrs r3, r0, 16 +_0806055E: + ldr r0, _08060588 @ =gUnknown_83A6054 + lsls r4, r6, 2 + adds r4, r0 + mov r0, sp + movs r6, 0 + ldrsh r0, [r0, r6] + movs r6, 0 + ldrsh r1, [r5, r6] + lsls r2, 16 + asrs r2, 16 + lsls r3, 16 + asrs r3, 16 + ldr r4, [r4] + bl _call_via_r4 + lsls r0, 24 + lsrs r0, 24 +_08060580: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08060588: .4byte gUnknown_83A6054 + thumb_func_end GetRunningPastFacingDirection + + thumb_func_start sub_806058C +sub_806058C: @ 806058C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080605A8 @ =gObjectEvents + adds r0, r2 + ldr r2, _080605AC @ =sub_80605B0 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080605A8: .4byte gObjectEvents +_080605AC: .4byte sub_80605B0 + thumb_func_end sub_806058C + + thumb_func_start sub_80605B0 +sub_80605B0: @ 80605B0 + push {r4,lr} + ldr r3, _080605CC @ =gUnknown_83A6080 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080605CC: .4byte gUnknown_83A6080 + thumb_func_end sub_80605B0 + + thumb_func_start sub_80605D0 +sub_80605D0: @ 80605D0 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80605D0 + + thumb_func_start sub_80605E4 +sub_80605E4: @ 80605E4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80605E4 + + thumb_func_start sub_8060610 +sub_8060610: @ 8060610 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060646 + ldr r4, _08060650 @ =gUnknown_83A6000 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08060646: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060650: .4byte gUnknown_83A6000 + thumb_func_end sub_8060610 + + thumb_func_start sub_8060654 +sub_8060654: @ 8060654 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _08060672 + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _0806067A +_08060672: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _0806067C +_0806067A: + movs r0, 0 +_0806067C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060654 + + thumb_func_start sub_8060684 +sub_8060684: @ 8060684 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080606C8 @ =gUnknown_83A6050 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080606B4 + bl Random + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080606B4: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080606C8: .4byte gUnknown_83A6050 + thumb_func_end sub_8060684 + + thumb_func_start sub_80606CC +sub_80606CC: @ 80606CC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080606E8 @ =gObjectEvents + adds r0, r2 + ldr r2, _080606EC @ =sub_80606F0 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080606E8: .4byte gObjectEvents +_080606EC: .4byte sub_80606F0 + thumb_func_end sub_80606CC + + thumb_func_start sub_80606F0 +sub_80606F0: @ 80606F0 + push {r4,lr} + ldr r3, _0806070C @ =gUnknown_83A6094 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806070C: .4byte gUnknown_83A6094 + thumb_func_end sub_80606F0 + + thumb_func_start sub_8060710 +sub_8060710: @ 8060710 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060710 + + thumb_func_start sub_8060724 +sub_8060724: @ 8060724 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060724 + + thumb_func_start sub_8060750 +sub_8060750: @ 8060750 + push {r4-r6,lr} + adds r6, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060784 + ldr r5, _08060780 @ =gUnknown_83A6000 + bl Random + movs r4, 0x3 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r5 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r6, 0 + bl SetObjectEventStepTimer + strh r4, [r6, 0x30] + movs r0, 0x1 + b _08060786 + .align 2, 0 +_08060780: .4byte gUnknown_83A6000 +_08060784: + movs r0, 0 +_08060786: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8060750 + + thumb_func_start sub_806078C +sub_806078C: @ 806078C + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _080607A0 + movs r0, 0 + b _080607A6 +_080607A0: + movs r0, 0x4 + strh r0, [r4, 0x30] + movs r0, 0x1 +_080607A6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806078C + + thumb_func_start sub_80607AC +sub_80607AC: @ 80607AC + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _080607F4 @ =gUnknown_83A60B0 + mov r0, sp + movs r2, 0x2 + bl memcpy + bl Random + movs r7, 0x1 + adds r1, r7, 0 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r4, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x5 + strh r0, [r6, 0x30] + adds r0, r5, 0 + adds r1, r4, 0 + bl npc_block_way__next_tile + lsls r0, 24 + cmp r0, 0 + beq _080607EA + strh r7, [r6, 0x30] +_080607EA: + movs r0, 0x1 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080607F4: .4byte gUnknown_83A60B0 + thumb_func_end sub_80607AC + + thumb_func_start sub_80607F8 +sub_80607F8: @ 80607F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x6 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80607F8 + + thumb_func_start sub_8060828 +sub_8060828: @ 8060828 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060846 + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_08060846: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060828 + + thumb_func_start sub_8060850 +sub_8060850: @ 8060850 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806086C @ =gObjectEvents + adds r0, r2 + ldr r2, _08060870 @ =sub_8060874 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_0806086C: .4byte gObjectEvents +_08060870: .4byte sub_8060874 + thumb_func_end sub_8060850 + + thumb_func_start sub_8060874 +sub_8060874: @ 8060874 + push {r4,lr} + ldr r3, _08060890 @ =gUnknown_83A60B4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060890: .4byte gUnknown_83A60B4 + thumb_func_end sub_8060874 + + thumb_func_start sub_8060894 +sub_8060894: @ 8060894 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060894 + + thumb_func_start sub_80608A8 +sub_80608A8: @ 80608A8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80608A8 + + thumb_func_start sub_80608D4 +sub_80608D4: @ 80608D4 + push {r4-r6,lr} + adds r6, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060908 + ldr r5, _08060904 @ =gUnknown_83A6000 + bl Random + movs r4, 0x3 + adds r1, r4, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r5 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r6, 0 + bl SetObjectEventStepTimer + strh r4, [r6, 0x30] + movs r0, 0x1 + b _0806090A + .align 2, 0 +_08060904: .4byte gUnknown_83A6000 +_08060908: + movs r0, 0 +_0806090A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80608D4 + + thumb_func_start sub_8060910 +sub_8060910: @ 8060910 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _08060924 + movs r0, 0 + b _0806092A +_08060924: + movs r0, 0x4 + strh r0, [r4, 0x30] + movs r0, 0x1 +_0806092A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060910 + + thumb_func_start sub_8060930 +sub_8060930: @ 8060930 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _08060978 @ =gUnknown_83A60D0 + mov r0, sp + movs r2, 0x2 + bl memcpy + bl Random + movs r7, 0x1 + adds r1, r7, 0 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r4, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x5 + strh r0, [r6, 0x30] + adds r0, r5, 0 + adds r1, r4, 0 + bl npc_block_way__next_tile + lsls r0, 24 + cmp r0, 0 + beq _0806096E + strh r7, [r6, 0x30] +_0806096E: + movs r0, 0x1 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060978: .4byte gUnknown_83A60D0 + thumb_func_end sub_8060930 + + thumb_func_start sub_806097C +sub_806097C: @ 806097C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x6 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806097C + + thumb_func_start sub_80609AC +sub_80609AC: @ 80609AC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _080609CA + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_080609CA: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80609AC + + thumb_func_start sub_80609D4 +sub_80609D4: @ 80609D4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080609F0 @ =gObjectEvents + adds r0, r2 + ldr r2, _080609F4 @ =sub_80609F8 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080609F0: .4byte gObjectEvents +_080609F4: .4byte sub_80609F8 + thumb_func_end sub_80609D4 + + thumb_func_start sub_80609F8 +sub_80609F8: @ 80609F8 + push {r4,lr} + ldr r3, _08060A14 @ =gUnknown_83A60D4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060A14: .4byte gUnknown_83A60D4 + thumb_func_end sub_80609F8 + + thumb_func_start sub_8060A18 +sub_8060A18: @ 8060A18 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl npc_reset + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060A18 + + thumb_func_start sub_8060A44 +sub_8060A44: @ 8060A44 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + bne _08060A56 + movs r0, 0 + b _08060A5C +_08060A56: + movs r0, 0x2 + strh r0, [r4, 0x30] + movs r0, 0x1 +_08060A5C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060A44 + + thumb_func_start sub_8060A64 +sub_8060A64: @ 8060A64 + ldrb r2, [r0] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0 + bx lr + thumb_func_end sub_8060A64 + + thumb_func_start sub_8060A74 +sub_8060A74: @ 8060A74 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08060A90 @ =gObjectEvents + adds r0, r2 + ldr r2, _08060A94 @ =sub_8060A98 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08060A90: .4byte gObjectEvents +_08060A94: .4byte sub_8060A98 + thumb_func_end sub_8060A74 + + thumb_func_start sub_8060A98 +sub_8060A98: @ 8060A98 + push {r4,lr} + ldr r3, _08060AB4 @ =gUnknown_83A60E0 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060AB4: .4byte gUnknown_83A60E0 + thumb_func_end sub_8060A98 + + thumb_func_start sub_8060AB8 +sub_8060AB8: @ 8060AB8 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060AB8 + + thumb_func_start sub_8060ACC +sub_8060ACC: @ 8060ACC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060ACC + + thumb_func_start sub_8060AF8 +sub_8060AF8: @ 8060AF8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060B2E + ldr r4, _08060B38 @ =gUnknown_83A6000 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08060B2E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060B38: .4byte gUnknown_83A6000 + thumb_func_end sub_8060AF8 + + thumb_func_start sub_8060B3C +sub_8060B3C: @ 8060B3C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _08060B5A + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08060B62 +_08060B5A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08060B64 +_08060B62: + movs r0, 0 +_08060B64: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060B3C + + thumb_func_start sub_8060B6C +sub_8060B6C: @ 8060B6C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08060BB0 @ =gUnknown_83A60B0 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x1 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08060B9C + bl Random + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08060B9C: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08060BB0: .4byte gUnknown_83A60B0 + thumb_func_end sub_8060B6C + + thumb_func_start sub_8060BB4 +sub_8060BB4: @ 8060BB4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08060BD0 @ =gObjectEvents + adds r0, r2 + ldr r2, _08060BD4 @ =sub_8060BD8 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08060BD0: .4byte gObjectEvents +_08060BD4: .4byte sub_8060BD8 + thumb_func_end sub_8060BB4 + + thumb_func_start sub_8060BD8 +sub_8060BD8: @ 8060BD8 + push {r4,lr} + ldr r3, _08060BF4 @ =gUnknown_83A60F4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060BF4: .4byte gUnknown_83A60F4 + thumb_func_end sub_8060BD8 + + thumb_func_start sub_8060BF8 +sub_8060BF8: @ 8060BF8 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060BF8 + + thumb_func_start sub_8060C0C +sub_8060C0C: @ 8060C0C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060C0C + + thumb_func_start sub_8060C38 +sub_8060C38: @ 8060C38 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060C6E + ldr r4, _08060C78 @ =gUnknown_83A6000 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08060C6E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060C78: .4byte gUnknown_83A6000 + thumb_func_end sub_8060C38 + + thumb_func_start sub_8060C7C +sub_8060C7C: @ 8060C7C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _08060C9A + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08060CA2 +_08060C9A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08060CA4 +_08060CA2: + movs r0, 0 +_08060CA4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060C7C + + thumb_func_start sub_8060CAC +sub_8060CAC: @ 8060CAC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08060CF0 @ =gUnknown_83A60D0 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x2 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08060CDC + bl Random + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08060CDC: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08060CF0: .4byte gUnknown_83A60D0 + thumb_func_end sub_8060CAC + + thumb_func_start sub_8060CF4 +sub_8060CF4: @ 8060CF4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08060D10 @ =gObjectEvents + adds r0, r2 + ldr r2, _08060D14 @ =sub_8060D18 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08060D10: .4byte gObjectEvents +_08060D14: .4byte sub_8060D18 + thumb_func_end sub_8060CF4 + + thumb_func_start sub_8060D18 +sub_8060D18: @ 8060D18 + push {r4,lr} + ldr r3, _08060D34 @ =gUnknown_83A6108 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060D34: .4byte gUnknown_83A6108 + thumb_func_end sub_8060D18 + + thumb_func_start sub_8060D38 +sub_8060D38: @ 8060D38 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060D38 + + thumb_func_start sub_8060D4C +sub_8060D4C: @ 8060D4C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060D4C + + thumb_func_start sub_8060D78 +sub_8060D78: @ 8060D78 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060DAE + ldr r4, _08060DB8 @ =gUnknown_83A6010 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08060DAE: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060DB8: .4byte gUnknown_83A6010 + thumb_func_end sub_8060D78 + + thumb_func_start sub_8060DBC +sub_8060DBC: @ 8060DBC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _08060DDA + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08060DE2 +_08060DDA: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08060DE4 +_08060DE2: + movs r0, 0 +_08060DE4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060DBC + + thumb_func_start sub_8060DEC +sub_8060DEC: @ 8060DEC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08060E30 @ =gUnknown_83A611C + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x3 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08060E1C + bl Random + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08060E1C: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08060E30: .4byte gUnknown_83A611C + thumb_func_end sub_8060DEC + + thumb_func_start sub_8060E34 +sub_8060E34: @ 8060E34 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08060E50 @ =gObjectEvents + adds r0, r2 + ldr r2, _08060E54 @ =sub_8060E58 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08060E50: .4byte gObjectEvents +_08060E54: .4byte sub_8060E58 + thumb_func_end sub_8060E34 + + thumb_func_start sub_8060E58 +sub_8060E58: @ 8060E58 + push {r4,lr} + ldr r3, _08060E74 @ =gUnknown_83A6120 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060E74: .4byte gUnknown_83A6120 + thumb_func_end sub_8060E58 + + thumb_func_start sub_8060E78 +sub_8060E78: @ 8060E78 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060E78 + + thumb_func_start sub_8060E8C +sub_8060E8C: @ 8060E8C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060E8C + + thumb_func_start sub_8060EB8 +sub_8060EB8: @ 8060EB8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08060EEE + ldr r4, _08060EF8 @ =gUnknown_83A6010 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08060EEE: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08060EF8: .4byte gUnknown_83A6010 + thumb_func_end sub_8060EB8 + + thumb_func_start sub_8060EFC +sub_8060EFC: @ 8060EFC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _08060F1A + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08060F22 +_08060F1A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08060F24 +_08060F22: + movs r0, 0 +_08060F24: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060EFC + + thumb_func_start sub_8060F2C +sub_8060F2C: @ 8060F2C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08060F70 @ =gUnknown_83A6134 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x4 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08060F5C + bl Random + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08060F5C: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08060F70: .4byte gUnknown_83A6134 + thumb_func_end sub_8060F2C + + thumb_func_start sub_8060F74 +sub_8060F74: @ 8060F74 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08060F90 @ =gObjectEvents + adds r0, r2 + ldr r2, _08060F94 @ =sub_8060F98 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08060F90: .4byte gObjectEvents +_08060F94: .4byte sub_8060F98 + thumb_func_end sub_8060F74 + + thumb_func_start sub_8060F98 +sub_8060F98: @ 8060F98 + push {r4,lr} + ldr r3, _08060FB4 @ =gUnknown_83A6138 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08060FB4: .4byte gUnknown_83A6138 + thumb_func_end sub_8060F98 + + thumb_func_start sub_8060FB8 +sub_8060FB8: @ 8060FB8 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8060FB8 + + thumb_func_start sub_8060FCC +sub_8060FCC: @ 8060FCC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8060FCC + + thumb_func_start sub_8060FF8 +sub_8060FF8: @ 8060FF8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _0806102E + ldr r4, _08061038 @ =gUnknown_83A6010 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0806102E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08061038: .4byte gUnknown_83A6010 + thumb_func_end sub_8060FF8 + + thumb_func_start sub_806103C +sub_806103C: @ 806103C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _0806105A + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08061062 +_0806105A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08061064 +_08061062: + movs r0, 0 +_08061064: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806103C + + thumb_func_start sub_806106C +sub_806106C: @ 806106C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080610B0 @ =gUnknown_83A614C + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x5 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0806109C + bl Random + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0806109C: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080610B0: .4byte gUnknown_83A614C + thumb_func_end sub_806106C + + thumb_func_start sub_80610B4 +sub_80610B4: @ 80610B4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080610D0 @ =gObjectEvents + adds r0, r2 + ldr r2, _080610D4 @ =sub_80610D8 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080610D0: .4byte gObjectEvents +_080610D4: .4byte sub_80610D8 + thumb_func_end sub_80610B4 + + thumb_func_start sub_80610D8 +sub_80610D8: @ 80610D8 + push {r4,lr} + ldr r3, _080610F4 @ =gUnknown_83A6150 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080610F4: .4byte gUnknown_83A6150 + thumb_func_end sub_80610D8 + + thumb_func_start sub_80610F8 +sub_80610F8: @ 80610F8 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80610F8 + + thumb_func_start sub_806110C +sub_806110C: @ 806110C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806110C + + thumb_func_start sub_8061138 +sub_8061138: @ 8061138 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _0806116E + ldr r4, _08061178 @ =gUnknown_83A6010 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0806116E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08061178: .4byte gUnknown_83A6010 + thumb_func_end sub_8061138 + + thumb_func_start sub_806117C +sub_806117C: @ 806117C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _0806119A + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _080611A2 +_0806119A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _080611A4 +_080611A2: + movs r0, 0 +_080611A4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806117C + + thumb_func_start sub_80611AC +sub_80611AC: @ 80611AC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080611F0 @ =gUnknown_83A6164 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x6 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080611DC + bl Random + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080611DC: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080611F0: .4byte gUnknown_83A6164 + thumb_func_end sub_80611AC + + thumb_func_start sub_80611F4 +sub_80611F4: @ 80611F4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061210 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061214 @ =sub_8061218 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061210: .4byte gObjectEvents +_08061214: .4byte sub_8061218 + thumb_func_end sub_80611F4 + + thumb_func_start sub_8061218 +sub_8061218: @ 8061218 + push {r4,lr} + ldr r3, _08061234 @ =gUnknown_83A6168 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061234: .4byte gUnknown_83A6168 + thumb_func_end sub_8061218 + + thumb_func_start sub_8061238 +sub_8061238: @ 8061238 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061238 + + thumb_func_start sub_806124C +sub_806124C: @ 806124C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806124C + + thumb_func_start sub_8061278 +sub_8061278: @ 8061278 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _080612AE + ldr r4, _080612B8 @ =gUnknown_83A6010 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_080612AE: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080612B8: .4byte gUnknown_83A6010 + thumb_func_end sub_8061278 + + thumb_func_start sub_80612BC +sub_80612BC: @ 80612BC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _080612DA + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _080612E2 +_080612DA: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _080612E4 +_080612E2: + movs r0, 0 +_080612E4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80612BC + + thumb_func_start sub_80612EC +sub_80612EC: @ 80612EC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061330 @ =gUnknown_83A617C + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0x7 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0806131C + bl Random + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0806131C: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061330: .4byte gUnknown_83A617C + thumb_func_end sub_80612EC + + thumb_func_start sub_8061334 +sub_8061334: @ 8061334 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061350 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061354 @ =sub_8061358 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061350: .4byte gObjectEvents +_08061354: .4byte sub_8061358 + thumb_func_end sub_8061334 + + thumb_func_start sub_8061358 +sub_8061358: @ 8061358 + push {r4,lr} + ldr r3, _08061374 @ =gUnknown_83A6180 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061374: .4byte gUnknown_83A6180 + thumb_func_end sub_8061358 + + thumb_func_start sub_8061378 +sub_8061378: @ 8061378 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061378 + + thumb_func_start sub_806138C +sub_806138C: @ 806138C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806138C + + thumb_func_start sub_80613B8 +sub_80613B8: @ 80613B8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _080613EE + ldr r4, _080613F8 @ =gUnknown_83A6010 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_080613EE: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080613F8: .4byte gUnknown_83A6010 + thumb_func_end sub_80613B8 + + thumb_func_start sub_80613FC +sub_80613FC: @ 80613FC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _0806141A + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08061422 +_0806141A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08061424 +_08061422: + movs r0, 0 +_08061424: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80613FC + + thumb_func_start sub_806142C +sub_806142C: @ 806142C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061470 @ =gUnknown_83A6194 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0x8 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0806145C + bl Random + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0806145C: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061470: .4byte gUnknown_83A6194 + thumb_func_end sub_806142C + + thumb_func_start sub_8061474 +sub_8061474: @ 8061474 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061490 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061494 @ =sub_8061498 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061490: .4byte gObjectEvents +_08061494: .4byte sub_8061498 + thumb_func_end sub_8061474 + + thumb_func_start sub_8061498 +sub_8061498: @ 8061498 + push {r4,lr} + ldr r3, _080614B4 @ =gUnknown_83A6198 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080614B4: .4byte gUnknown_83A6198 + thumb_func_end sub_8061498 + + thumb_func_start sub_80614B8 +sub_80614B8: @ 80614B8 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80614B8 + + thumb_func_start sub_80614CC +sub_80614CC: @ 80614CC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80614CC + + thumb_func_start sub_80614F8 +sub_80614F8: @ 80614F8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _0806152E + ldr r4, _08061538 @ =gUnknown_83A6010 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0806152E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08061538: .4byte gUnknown_83A6010 + thumb_func_end sub_80614F8 + + thumb_func_start sub_806153C +sub_806153C: @ 806153C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _0806155A + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08061562 +_0806155A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08061564 +_08061562: + movs r0, 0 +_08061564: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806153C + + thumb_func_start sub_806156C +sub_806156C: @ 806156C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080615B0 @ =gUnknown_83A61AC + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0x9 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0806159C + bl Random + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0806159C: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080615B0: .4byte gUnknown_83A61AC + thumb_func_end sub_806156C + + thumb_func_start sub_80615B4 +sub_80615B4: @ 80615B4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080615D0 @ =gObjectEvents + adds r0, r2 + ldr r2, _080615D4 @ =sub_80615D8 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080615D0: .4byte gObjectEvents +_080615D4: .4byte sub_80615D8 + thumb_func_end sub_80615B4 + + thumb_func_start sub_80615D8 +sub_80615D8: @ 80615D8 + push {r4,lr} + ldr r3, _080615F4 @ =gUnknown_83A61B0 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080615F4: .4byte gUnknown_83A61B0 + thumb_func_end sub_80615D8 + + thumb_func_start sub_80615F8 +sub_80615F8: @ 80615F8 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80615F8 + + thumb_func_start sub_806160C +sub_806160C: @ 806160C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806160C + + thumb_func_start sub_8061638 +sub_8061638: @ 8061638 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _0806166E + ldr r4, _08061678 @ =gUnknown_83A6010 + bl Random + movs r5, 0x3 + adds r1, r5, 0 + ands r1, r0 + lsls r1, 1 + adds r1, r4 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r7, 0 + bl SetObjectEventStepTimer + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0806166E: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08061678: .4byte gUnknown_83A6010 + thumb_func_end sub_8061638 + + thumb_func_start sub_806167C +sub_806167C: @ 806167C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _0806169A + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _080616A2 +_0806169A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _080616A4 +_080616A2: + movs r0, 0 +_080616A4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806167C + + thumb_func_start sub_80616AC +sub_80616AC: @ 80616AC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080616F0 @ =gUnknown_83A61C4 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0xA + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080616DC + bl Random + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080616DC: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080616F0: .4byte gUnknown_83A61C4 + thumb_func_end sub_80616AC + + thumb_func_start sub_80616F4 +sub_80616F4: @ 80616F4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061710 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061714 @ =sub_8061718 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061710: .4byte gObjectEvents +_08061714: .4byte sub_8061718 + thumb_func_end sub_80616F4 + + thumb_func_start sub_8061718 +sub_8061718: @ 8061718 + push {r4,lr} + ldr r3, _08061734 @ =gUnknown_83A61C8 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061734: .4byte gUnknown_83A61C8 + thumb_func_end sub_8061718 + + thumb_func_start sub_8061738 +sub_8061738: @ 8061738 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl npc_reset + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8061738 + + thumb_func_start sub_8061764 +sub_8061764: @ 8061764 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _0806177E + adds r0, r4, 0 + movs r1, 0x30 + bl SetObjectEventStepTimer + movs r0, 0x2 + strh r0, [r4, 0x30] +_0806177E: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061764 + + thumb_func_start sub_8061788 +sub_8061788: @ 8061788 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _080617A6 + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _080617AA +_080617A6: + movs r0, 0x3 + strh r0, [r5, 0x30] +_080617AA: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8061788 + + thumb_func_start sub_80617B4 +sub_80617B4: @ 80617B4 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080617F4 @ =gUnknown_83A61D8 + mov r0, sp + movs r2, 0x5 + bl memcpy + adds r0, r4, 0 + movs r1, 0 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080617E0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + add r0, sp + ldrb r1, [r0] +_080617E0: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0 + strh r0, [r5, 0x30] + movs r0, 0x1 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080617F4: .4byte gUnknown_83A61D8 + thumb_func_end sub_80617B4 + + thumb_func_start sub_80617F8 +sub_80617F8: @ 80617F8 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061814 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061818 @ =sub_806181C + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061814: .4byte gObjectEvents +_08061818: .4byte sub_806181C + thumb_func_end sub_80617F8 + + thumb_func_start sub_806181C +sub_806181C: @ 806181C + push {r4,lr} + ldr r3, _08061838 @ =gUnknown_83A61E0 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061838: .4byte gUnknown_83A61E0 + thumb_func_end sub_806181C + + thumb_func_start sub_806183C +sub_806183C: @ 806183C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl npc_reset + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806183C + + thumb_func_start sub_8061868 +sub_8061868: @ 8061868 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08061882 + adds r0, r4, 0 + movs r1, 0x30 + bl SetObjectEventStepTimer + movs r0, 0x2 + strh r0, [r4, 0x30] +_08061882: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061868 + + thumb_func_start sub_806188C +sub_806188C: @ 806188C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + bne _080618AA + adds r0, r4, 0 + bl ObjectEventIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _080618AE +_080618AA: + movs r0, 0x3 + strh r0, [r5, 0x30] +_080618AE: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806188C + + thumb_func_start sub_80618B8 +sub_80618B8: @ 80618B8 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080618F8 @ =gUnknown_83A61F0 + mov r0, sp + movs r2, 0x5 + bl memcpy + adds r0, r4, 0 + movs r1, 0 + bl GetRunningPastFacingDirection + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080618E4 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + add r0, sp + ldrb r1, [r0] +_080618E4: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0 + strh r0, [r5, 0x30] + movs r0, 0x1 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080618F8: .4byte gUnknown_83A61F0 + thumb_func_end sub_80618B8 + + thumb_func_start sub_80618FC +sub_80618FC: @ 80618FC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061918 @ =gObjectEvents + adds r0, r2 + ldr r2, _0806191C @ =sub_8061920 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061918: .4byte gObjectEvents +_0806191C: .4byte sub_8061920 + thumb_func_end sub_80618FC + + thumb_func_start sub_8061920 +sub_8061920: @ 8061920 + push {r4,lr} + ldr r3, _0806193C @ =gUnknown_83A61F8 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806193C: .4byte gUnknown_83A61F8 + thumb_func_end sub_8061920 + + thumb_func_start sub_8061940 +sub_8061940: @ 8061940 + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061940 + + thumb_func_start sub_8061954 +sub_8061954: @ 8061954 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _08061988 @ =gUnknown_839FD5D + ldrb r1, [r4, 0x6] + adds r1, r0 + ldrb r1, [r1] + adds r0, r4, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0 + beq _08061976 + adds r0, r1, 0 + bl GetOppositeDirection + lsls r0, 24 + lsrs r1, r0, 24 +_08061976: + adds r0, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061988: .4byte gUnknown_839FD5D + thumb_func_end sub_8061954 + + thumb_func_start sub_806198C +sub_806198C: @ 806198C + push {r4-r7,lr} + adds r4, r0, 0 + adds r7, r1, 0 + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0 + beq _080619BC + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bne _080619BC + movs r0, 0 + strb r0, [r2] + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetOppositeDirection + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl ObjectEventSetDirection +_080619BC: + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl npc_block_way__next_tile + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r5, 0x1 + bne _08061A12 + adds r1, r4, 0 + adds r1, 0x21 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetOppositeDirection + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl ObjectEventSetDirection + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl npc_block_way__next_tile + lsls r0, 24 + lsrs r5, r0, 24 +_08061A12: + cmp r5, 0 + beq _08061A24 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetStepInPlaceDelay16AnimId + lsls r0, 24 + lsrs r6, r0, 24 +_08061A24: + adds r0, r4, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x3 + strh r0, [r7, 0x30] + movs r0, 0x1 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_806198C + + thumb_func_start sub_8061A44 +sub_8061A44: @ 8061A44 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08061A62 + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_08061A62: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8061A44 + + thumb_func_start sub_8061A6C +sub_8061A6C: @ 8061A6C + push {r4,lr} + adds r4, r1, 0 + bl npc_reset + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8061A6C + + thumb_func_start MoveObjectEventInNextDirectionInSequence +MoveObjectEventInNextDirectionInSequence: @ 8061A80 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + mov r8, r1 + adds r7, r2, 0 + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x3 + bne _08061AA2 + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bne _08061AA2 + movs r0, 0 + strb r0, [r2] +_08061AA2: + adds r5, r4, 0 + adds r5, 0x21 + ldrb r0, [r5] + adds r0, r7, r0 + ldrb r1, [r0] + adds r0, r4, 0 + bl ObjectEventSetDirection + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl npc_block_way__next_tile + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08061AFC + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldrb r0, [r5] + adds r0, r7, r0 + ldrb r1, [r0] + adds r0, r4, 0 + bl ObjectEventSetDirection + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl sub_8063F84 + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl npc_block_way__next_tile + lsls r0, 24 + lsrs r0, 24 +_08061AFC: + cmp r0, 0 + beq _08061B0E + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetStepInPlaceDelay16AnimId + lsls r0, 24 + lsrs r6, r0, 24 +_08061B0E: + adds r0, r4, 0 + mov r1, r8 + adds r2, r6, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + mov r1, r8 + strh r0, [r1, 0x30] + movs r0, 0x1 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end MoveObjectEventInNextDirectionInSequence + + thumb_func_start sub_8061B34 +sub_8061B34: @ 8061B34 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08061B52 + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_08061B52: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8061B34 + + thumb_func_start sub_8061B5C +sub_8061B5C: @ 8061B5C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061B78 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061B7C @ =sub_8061B80 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061B78: .4byte gObjectEvents +_08061B7C: .4byte sub_8061B80 + thumb_func_end sub_8061B5C + + thumb_func_start sub_8061B80 +sub_8061B80: @ 8061B80 + push {r4,lr} + ldr r3, _08061B9C @ =gUnknown_83A6208 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061B9C: .4byte gUnknown_83A6208 + thumb_func_end sub_8061B80 + + thumb_func_start sub_8061BA0 +sub_8061BA0: @ 8061BA0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061BE4 @ =gUnknown_83A6214 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08061BCC + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061BCC + movs r0, 0x3 + strb r0, [r2] +_08061BCC: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061BE4: .4byte gUnknown_83A6214 + thumb_func_end sub_8061BA0 + + thumb_func_start sub_8061BE8 +sub_8061BE8: @ 8061BE8 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061C04 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061C08 @ =sub_8061C0C + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061C04: .4byte gObjectEvents +_08061C08: .4byte sub_8061C0C + thumb_func_end sub_8061BE8 + + thumb_func_start sub_8061C0C +sub_8061C0C: @ 8061C0C + push {r4,lr} + ldr r3, _08061C28 @ =gUnknown_83A6218 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061C28: .4byte gUnknown_83A6218 + thumb_func_end sub_8061C0C + + thumb_func_start sub_8061C2C +sub_8061C2C: @ 8061C2C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061C70 @ =gUnknown_83A6224 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08061C58 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061C58 + movs r0, 0x2 + strb r0, [r2] +_08061C58: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061C70: .4byte gUnknown_83A6224 + thumb_func_end sub_8061C2C + + thumb_func_start sub_8061C74 +sub_8061C74: @ 8061C74 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061C90 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061C94 @ =sub_8061C98 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061C90: .4byte gObjectEvents +_08061C94: .4byte sub_8061C98 + thumb_func_end sub_8061C74 + + thumb_func_start sub_8061C98 +sub_8061C98: @ 8061C98 + push {r4,lr} + ldr r3, _08061CB4 @ =gUnknown_83A6228 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061CB4: .4byte gUnknown_83A6228 + thumb_func_end sub_8061C98 + + thumb_func_start sub_8061CB8 +sub_8061CB8: @ 8061CB8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061CFC @ =gUnknown_83A6234 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08061CE4 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061CE4 + movs r0, 0x2 + strb r0, [r2] +_08061CE4: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061CFC: .4byte gUnknown_83A6234 + thumb_func_end sub_8061CB8 + + thumb_func_start sub_8061D00 +sub_8061D00: @ 8061D00 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061D1C @ =gObjectEvents + adds r0, r2 + ldr r2, _08061D20 @ =sub_8061D24 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061D1C: .4byte gObjectEvents +_08061D20: .4byte sub_8061D24 + thumb_func_end sub_8061D00 + + thumb_func_start sub_8061D24 +sub_8061D24: @ 8061D24 + push {r4,lr} + ldr r3, _08061D40 @ =gUnknown_83A6238 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061D40: .4byte gUnknown_83A6238 + thumb_func_end sub_8061D24 + + thumb_func_start sub_8061D44 +sub_8061D44: @ 8061D44 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061D88 @ =gUnknown_83A6244 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08061D70 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061D70 + movs r0, 0x3 + strb r0, [r2] +_08061D70: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061D88: .4byte gUnknown_83A6244 + thumb_func_end sub_8061D44 + + thumb_func_start sub_8061D8C +sub_8061D8C: @ 8061D8C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061DA8 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061DAC @ =sub_8061DB0 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061DA8: .4byte gObjectEvents +_08061DAC: .4byte sub_8061DB0 + thumb_func_end sub_8061D8C + + thumb_func_start sub_8061DB0 +sub_8061DB0: @ 8061DB0 + push {r4,lr} + ldr r3, _08061DCC @ =gUnknown_83A6248 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061DCC: .4byte gUnknown_83A6248 + thumb_func_end sub_8061DB0 + + thumb_func_start sub_8061DD0 +sub_8061DD0: @ 8061DD0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061E14 @ =gUnknown_83A6254 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08061DFC + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061DFC + movs r0, 0x3 + strb r0, [r2] +_08061DFC: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061E14: .4byte gUnknown_83A6254 + thumb_func_end sub_8061DD0 + + thumb_func_start sub_8061E18 +sub_8061E18: @ 8061E18 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061E34 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061E38 @ =sub_8061E3C + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061E34: .4byte gObjectEvents +_08061E38: .4byte sub_8061E3C + thumb_func_end sub_8061E18 + + thumb_func_start sub_8061E3C +sub_8061E3C: @ 8061E3C + push {r4,lr} + ldr r3, _08061E58 @ =gUnknown_83A6258 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061E58: .4byte gUnknown_83A6258 + thumb_func_end sub_8061E3C + + thumb_func_start sub_8061E5C +sub_8061E5C: @ 8061E5C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061EA0 @ =gUnknown_83A6264 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08061E88 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061E88 + movs r0, 0x2 + strb r0, [r2] +_08061E88: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061EA0: .4byte gUnknown_83A6264 + thumb_func_end sub_8061E5C + + thumb_func_start sub_8061EA4 +sub_8061EA4: @ 8061EA4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061EC0 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061EC4 @ =sub_8061EC8 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061EC0: .4byte gObjectEvents +_08061EC4: .4byte sub_8061EC8 + thumb_func_end sub_8061EA4 + + thumb_func_start sub_8061EC8 +sub_8061EC8: @ 8061EC8 + push {r4,lr} + ldr r3, _08061EE4 @ =gUnknown_83A6268 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061EE4: .4byte gUnknown_83A6268 + thumb_func_end sub_8061EC8 + + thumb_func_start sub_8061EE8 +sub_8061EE8: @ 8061EE8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061F2C @ =gUnknown_83A6050 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08061F14 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061F14 + movs r0, 0x2 + strb r0, [r2] +_08061F14: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061F2C: .4byte gUnknown_83A6050 + thumb_func_end sub_8061EE8 + + thumb_func_start sub_8061F30 +sub_8061F30: @ 8061F30 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061F4C @ =gObjectEvents + adds r0, r2 + ldr r2, _08061F50 @ =sub_8061F54 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061F4C: .4byte gObjectEvents +_08061F50: .4byte sub_8061F54 + thumb_func_end sub_8061F30 + + thumb_func_start sub_8061F54 +sub_8061F54: @ 8061F54 + push {r4,lr} + ldr r3, _08061F70 @ =gUnknown_83A6274 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061F70: .4byte gUnknown_83A6274 + thumb_func_end sub_8061F54 + + thumb_func_start sub_8061F74 +sub_8061F74: @ 8061F74 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08061FB8 @ =gUnknown_83A6280 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08061FA0 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08061FA0 + movs r0, 0x3 + strb r0, [r2] +_08061FA0: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08061FB8: .4byte gUnknown_83A6280 + thumb_func_end sub_8061F74 + + thumb_func_start sub_8061FBC +sub_8061FBC: @ 8061FBC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08061FD8 @ =gObjectEvents + adds r0, r2 + ldr r2, _08061FDC @ =sub_8061FE0 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08061FD8: .4byte gObjectEvents +_08061FDC: .4byte sub_8061FE0 + thumb_func_end sub_8061FBC + + thumb_func_start sub_8061FE0 +sub_8061FE0: @ 8061FE0 + push {r4,lr} + ldr r3, _08061FFC @ =gUnknown_83A6284 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08061FFC: .4byte gUnknown_83A6284 + thumb_func_end sub_8061FE0 + + thumb_func_start sub_8062000 +sub_8062000: @ 8062000 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062044 @ =gUnknown_83A6290 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _0806202C + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0806202C + movs r0, 0x3 + strb r0, [r2] +_0806202C: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062044: .4byte gUnknown_83A6290 + thumb_func_end sub_8062000 + + thumb_func_start sub_8062048 +sub_8062048: @ 8062048 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062064 @ =gObjectEvents + adds r0, r2 + ldr r2, _08062068 @ =sub_806206C + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08062064: .4byte gObjectEvents +_08062068: .4byte sub_806206C + thumb_func_end sub_8062048 + + thumb_func_start sub_806206C +sub_806206C: @ 806206C + push {r4,lr} + ldr r3, _08062088 @ =gUnknown_83A6294 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062088: .4byte gUnknown_83A6294 + thumb_func_end sub_806206C + + thumb_func_start sub_806208C +sub_806208C: @ 806208C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080620D0 @ =gUnknown_83A62A0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _080620B8 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080620B8 + movs r0, 0x2 + strb r0, [r2] +_080620B8: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080620D0: .4byte gUnknown_83A62A0 + thumb_func_end sub_806208C + + thumb_func_start sub_80620D4 +sub_80620D4: @ 80620D4 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080620F0 @ =gObjectEvents + adds r0, r2 + ldr r2, _080620F4 @ =sub_80620F8 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080620F0: .4byte gObjectEvents +_080620F4: .4byte sub_80620F8 + thumb_func_end sub_80620D4 + + thumb_func_start sub_80620F8 +sub_80620F8: @ 80620F8 + push {r4,lr} + ldr r3, _08062114 @ =gUnknown_83A62A4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062114: .4byte gUnknown_83A62A4 + thumb_func_end sub_80620F8 + + thumb_func_start sub_8062118 +sub_8062118: @ 8062118 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _0806215C @ =gUnknown_83A62B0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08062144 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062144 + movs r0, 0x2 + strb r0, [r2] +_08062144: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806215C: .4byte gUnknown_83A62B0 + thumb_func_end sub_8062118 + + thumb_func_start sub_8062160 +sub_8062160: @ 8062160 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806217C @ =gObjectEvents + adds r0, r2 + ldr r2, _08062180 @ =sub_8062184 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_0806217C: .4byte gObjectEvents +_08062180: .4byte sub_8062184 + thumb_func_end sub_8062160 + + thumb_func_start sub_8062184 +sub_8062184: @ 8062184 + push {r4,lr} + ldr r3, _080621A0 @ =gUnknown_83A62B4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080621A0: .4byte gUnknown_83A62B4 + thumb_func_end sub_8062184 + + thumb_func_start sub_80621A4 +sub_80621A4: @ 80621A4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080621E8 @ =gUnknown_83A62C0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080621D0 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080621D0 + movs r0, 0x3 + strb r0, [r2] +_080621D0: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080621E8: .4byte gUnknown_83A62C0 + thumb_func_end sub_80621A4 + + thumb_func_start sub_80621EC +sub_80621EC: @ 80621EC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062208 @ =gObjectEvents + adds r0, r2 + ldr r2, _0806220C @ =sub_8062210 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08062208: .4byte gObjectEvents +_0806220C: .4byte sub_8062210 + thumb_func_end sub_80621EC + + thumb_func_start sub_8062210 +sub_8062210: @ 8062210 + push {r4,lr} + ldr r3, _0806222C @ =gUnknown_83A62C4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806222C: .4byte gUnknown_83A62C4 + thumb_func_end sub_8062210 + + thumb_func_start sub_8062230 +sub_8062230: @ 8062230 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062274 @ =gUnknown_83A62D0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _0806225C + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0806225C + movs r0, 0x3 + strb r0, [r2] +_0806225C: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062274: .4byte gUnknown_83A62D0 + thumb_func_end sub_8062230 + + thumb_func_start sub_8062278 +sub_8062278: @ 8062278 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062294 @ =gObjectEvents + adds r0, r2 + ldr r2, _08062298 @ =sub_806229C + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08062294: .4byte gObjectEvents +_08062298: .4byte sub_806229C + thumb_func_end sub_8062278 + + thumb_func_start sub_806229C +sub_806229C: @ 806229C + push {r4,lr} + ldr r3, _080622B8 @ =gUnknown_83A62D4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080622B8: .4byte gUnknown_83A62D4 + thumb_func_end sub_806229C + + thumb_func_start sub_80622BC +sub_80622BC: @ 80622BC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062300 @ =gUnknown_83A62E0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _080622E8 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080622E8 + movs r0, 0x2 + strb r0, [r2] +_080622E8: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062300: .4byte gUnknown_83A62E0 + thumb_func_end sub_80622BC + + thumb_func_start sub_8062304 +sub_8062304: @ 8062304 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062320 @ =gObjectEvents + adds r0, r2 + ldr r2, _08062324 @ =sub_8062328 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08062320: .4byte gObjectEvents +_08062324: .4byte sub_8062328 + thumb_func_end sub_8062304 + + thumb_func_start sub_8062328 +sub_8062328: @ 8062328 + push {r4,lr} + ldr r3, _08062344 @ =gUnknown_83A62E4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062344: .4byte gUnknown_83A62E4 + thumb_func_end sub_8062328 + + thumb_func_start sub_8062348 +sub_8062348: @ 8062348 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _0806238C @ =gUnknown_83A62F0 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08062374 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062374 + movs r0, 0x2 + strb r0, [r2] +_08062374: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0806238C: .4byte gUnknown_83A62F0 + thumb_func_end sub_8062348 + + thumb_func_start sub_8062390 +sub_8062390: @ 8062390 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080623AC @ =gObjectEvents + adds r0, r2 + ldr r2, _080623B0 @ =sub_80623B4 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080623AC: .4byte gObjectEvents +_080623B0: .4byte sub_80623B4 + thumb_func_end sub_8062390 + + thumb_func_start sub_80623B4 +sub_80623B4: @ 80623B4 + push {r4,lr} + ldr r3, _080623D0 @ =gUnknown_83A62F4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080623D0: .4byte gUnknown_83A62F4 + thumb_func_end sub_80623B4 + + thumb_func_start sub_80623D4 +sub_80623D4: @ 80623D4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062418 @ =gUnknown_83A6300 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08062400 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062400 + movs r0, 0x3 + strb r0, [r2] +_08062400: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062418: .4byte gUnknown_83A6300 + thumb_func_end sub_80623D4 + + thumb_func_start sub_806241C +sub_806241C: @ 806241C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062438 @ =gObjectEvents + adds r0, r2 + ldr r2, _0806243C @ =sub_8062440 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08062438: .4byte gObjectEvents +_0806243C: .4byte sub_8062440 + thumb_func_end sub_806241C + + thumb_func_start sub_8062440 +sub_8062440: @ 8062440 + push {r4,lr} + ldr r3, _0806245C @ =gUnknown_83A6304 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806245C: .4byte gUnknown_83A6304 + thumb_func_end sub_8062440 + + thumb_func_start sub_8062460 +sub_8062460: @ 8062460 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080624A4 @ =gUnknown_83A6310 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _0806248C + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0806248C + movs r0, 0x3 + strb r0, [r2] +_0806248C: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080624A4: .4byte gUnknown_83A6310 + thumb_func_end sub_8062460 + + thumb_func_start sub_80624A8 +sub_80624A8: @ 80624A8 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080624C4 @ =gObjectEvents + adds r0, r2 + ldr r2, _080624C8 @ =sub_80624CC + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080624C4: .4byte gObjectEvents +_080624C8: .4byte sub_80624CC + thumb_func_end sub_80624A8 + + thumb_func_start sub_80624CC +sub_80624CC: @ 80624CC + push {r4,lr} + ldr r3, _080624E8 @ =gUnknown_83A6314 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080624E8: .4byte gUnknown_83A6314 + thumb_func_end sub_80624CC + + thumb_func_start sub_80624EC +sub_80624EC: @ 80624EC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062530 @ =gUnknown_83A6320 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08062518 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062518 + movs r0, 0x3 + strb r0, [r2] +_08062518: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062530: .4byte gUnknown_83A6320 + thumb_func_end sub_80624EC + + thumb_func_start sub_8062534 +sub_8062534: @ 8062534 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062550 @ =gObjectEvents + adds r0, r2 + ldr r2, _08062554 @ =sub_8062558 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08062550: .4byte gObjectEvents +_08062554: .4byte sub_8062558 + thumb_func_end sub_8062534 + + thumb_func_start sub_8062558 +sub_8062558: @ 8062558 + push {r4,lr} + ldr r3, _08062574 @ =gUnknown_83A6324 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062574: .4byte gUnknown_83A6324 + thumb_func_end sub_8062558 + + thumb_func_start sub_8062578 +sub_8062578: @ 8062578 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080625BC @ =gUnknown_83A6330 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080625A4 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080625A4 + movs r0, 0x3 + strb r0, [r2] +_080625A4: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080625BC: .4byte gUnknown_83A6330 + thumb_func_end sub_8062578 + + thumb_func_start sub_80625C0 +sub_80625C0: @ 80625C0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080625DC @ =gObjectEvents + adds r0, r2 + ldr r2, _080625E0 @ =sub_80625E4 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080625DC: .4byte gObjectEvents +_080625E0: .4byte sub_80625E4 + thumb_func_end sub_80625C0 + + thumb_func_start sub_80625E4 +sub_80625E4: @ 80625E4 + push {r4,lr} + ldr r3, _08062600 @ =gUnknown_83A6334 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062600: .4byte gUnknown_83A6334 + thumb_func_end sub_80625E4 + + thumb_func_start sub_8062604 +sub_8062604: @ 8062604 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062648 @ =gUnknown_83A6340 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08062630 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062630 + movs r0, 0x3 + strb r0, [r2] +_08062630: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062648: .4byte gUnknown_83A6340 + thumb_func_end sub_8062604 + + thumb_func_start sub_806264C +sub_806264C: @ 806264C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062668 @ =gObjectEvents + adds r0, r2 + ldr r2, _0806266C @ =sub_8062670 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08062668: .4byte gObjectEvents +_0806266C: .4byte sub_8062670 + thumb_func_end sub_806264C + + thumb_func_start sub_8062670 +sub_8062670: @ 8062670 + push {r4,lr} + ldr r3, _0806268C @ =gUnknown_83A6344 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806268C: .4byte gUnknown_83A6344 + thumb_func_end sub_8062670 + + thumb_func_start sub_8062690 +sub_8062690: @ 8062690 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080626D4 @ =gUnknown_83A6350 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080626BC + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080626BC + movs r0, 0x3 + strb r0, [r2] +_080626BC: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080626D4: .4byte gUnknown_83A6350 + thumb_func_end sub_8062690 + + thumb_func_start sub_80626D8 +sub_80626D8: @ 80626D8 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080626F4 @ =gObjectEvents + adds r0, r2 + ldr r2, _080626F8 @ =sub_80626FC + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080626F4: .4byte gObjectEvents +_080626F8: .4byte sub_80626FC + thumb_func_end sub_80626D8 + + thumb_func_start sub_80626FC +sub_80626FC: @ 80626FC + push {r4,lr} + ldr r3, _08062718 @ =gUnknown_83A6354 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062718: .4byte gUnknown_83A6354 + thumb_func_end sub_80626FC + + thumb_func_start sub_806271C +sub_806271C: @ 806271C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062760 @ =gUnknown_83A6360 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08062748 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062748 + movs r0, 0x3 + strb r0, [r2] +_08062748: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062760: .4byte gUnknown_83A6360 + thumb_func_end sub_806271C + + thumb_func_start sub_8062764 +sub_8062764: @ 8062764 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062780 @ =gObjectEvents + adds r0, r2 + ldr r2, _08062784 @ =sub_8062788 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08062780: .4byte gObjectEvents +_08062784: .4byte sub_8062788 + thumb_func_end sub_8062764 + + thumb_func_start sub_8062788 +sub_8062788: @ 8062788 + push {r4,lr} + ldr r3, _080627A4 @ =gUnknown_83A6364 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080627A4: .4byte gUnknown_83A6364 + thumb_func_end sub_8062788 + + thumb_func_start sub_80627A8 +sub_80627A8: @ 80627A8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080627EC @ =gUnknown_83A6370 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080627D4 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080627D4 + movs r0, 0x3 + strb r0, [r2] +_080627D4: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080627EC: .4byte gUnknown_83A6370 + thumb_func_end sub_80627A8 + + thumb_func_start sub_80627F0 +sub_80627F0: @ 80627F0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806280C @ =gObjectEvents + adds r0, r2 + ldr r2, _08062810 @ =sub_8062814 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_0806280C: .4byte gObjectEvents +_08062810: .4byte sub_8062814 + thumb_func_end sub_80627F0 + + thumb_func_start sub_8062814 +sub_8062814: @ 8062814 + push {r4,lr} + ldr r3, _08062830 @ =gUnknown_83A6374 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062830: .4byte gUnknown_83A6374 + thumb_func_end sub_8062814 + + thumb_func_start sub_8062834 +sub_8062834: @ 8062834 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _08062878 @ =gUnknown_83A6380 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08062860 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08062860 + movs r0, 0x3 + strb r0, [r2] +_08062860: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveObjectEventInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062878: .4byte gUnknown_83A6380 + thumb_func_end sub_8062834 + + thumb_func_start sub_806287C +sub_806287C: @ 806287C + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062898 @ =gObjectEvents + adds r0, r2 + ldr r2, _0806289C @ =sub_80628A0 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08062898: .4byte gObjectEvents +_0806289C: .4byte sub_80628A0 + thumb_func_end sub_806287C + + thumb_func_start sub_80628A0 +sub_80628A0: @ 80628A0 + push {r4,lr} + ldr r3, _080628BC @ =gUnknown_83A6384 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080628BC: .4byte gUnknown_83A6384 + thumb_func_end sub_80628A0 + + thumb_func_start mss_npc_reset_oampriv3_1_unk2_unk3 +mss_npc_reset_oampriv3_1_unk2_unk3: @ 80628C0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl npc_reset + adds r4, 0x21 + ldrb r0, [r4] + cmp r0, 0 + bne _080628D8 + bl GetPlayerFacingDirection + strb r0, [r4] +_080628D8: + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end mss_npc_reset_oampriv3_1_unk2_unk3 + + thumb_func_start sub_80628E4 +sub_80628E4: @ 80628E4 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + ldr r2, _08062908 @ =gObjectEvents + ldr r3, _0806290C @ =gPlayerAvatar + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1C] + cmp r0, 0xFF + beq _08062904 + ldrb r0, [r3, 0x3] + cmp r0, 0x2 + bne _08062910 +_08062904: + movs r0, 0 + b _08062938 + .align 2, 0 +_08062908: .4byte gObjectEvents +_0806290C: .4byte gPlayerAvatar +_08062910: + ldr r5, _08062940 @ =gUnknown_83A6390 + bl player_get_x22 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 22 + adds r4, r5 + bl player_get_direction_upper_nybble + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r4, [r4] + adds r0, r6, 0 + adds r1, r7, 0 + movs r3, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r0, 24 +_08062938: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062940: .4byte gUnknown_83A6390 + thumb_func_end sub_80628E4 + + thumb_func_start sub_8062944 +sub_8062944: @ 8062944 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08062962 + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_08062962: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8062944 + + thumb_func_start sub_806296C +sub_806296C: @ 806296C + movs r0, 0 + bx lr + thumb_func_end sub_806296C + + thumb_func_start sub_8062970 +sub_8062970: @ 8062970 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r1, _080629B4 @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + bl state_to_direction + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080629B4: .4byte gUnknown_839FD5D + thumb_func_end sub_8062970 + + thumb_func_start sub_80629B8 +sub_80629B8: @ 80629B8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062A6C @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl state_to_direction + adds r6, r0, 0 + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + adds r3, r5, 0 + bl ObjectEventMoveDestCoords + adds r0, r6, 0 + bl sub_8063F84 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl npc_block_way + lsls r0, 24 + cmp r0, 0 + bne _08062A3E + mov r1, r8 + cmp r1, 0 + beq _08062A52 + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062A52 +_08062A3E: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062A52: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062A6C: .4byte gUnknown_839FD5D + thumb_func_end sub_80629B8 + + thumb_func_start sub_8062A70 +sub_8062A70: @ 8062A70 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062B24 @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl state_to_direction + adds r6, r0, 0 + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + adds r3, r5, 0 + bl ObjectEventMoveDestCoords + adds r0, r6, 0 + bl sub_8063FB0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl npc_block_way + lsls r0, 24 + cmp r0, 0 + bne _08062AF6 + mov r1, r8 + cmp r1, 0 + beq _08062B0A + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062B0A +_08062AF6: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062B0A: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062B24: .4byte gUnknown_839FD5D + thumb_func_end sub_8062A70 + + thumb_func_start sub_8062B28 +sub_8062B28: @ 8062B28 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062BDC @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl state_to_direction + adds r6, r0, 0 + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + adds r3, r5, 0 + bl ObjectEventMoveDestCoords + adds r0, r6, 0 + bl sub_8064034 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl npc_block_way + lsls r0, 24 + cmp r0, 0 + bne _08062BAE + mov r1, r8 + cmp r1, 0 + beq _08062BC2 + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062BC2 +_08062BAE: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062BC2: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062BDC: .4byte gUnknown_839FD5D + thumb_func_end sub_8062B28 + + thumb_func_start sub_8062BE0 +sub_8062BE0: @ 8062BE0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062C94 @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl state_to_direction + adds r6, r0, 0 + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + adds r3, r5, 0 + bl ObjectEventMoveDestCoords + adds r0, r6, 0 + bl sub_8064060 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl npc_block_way + lsls r0, 24 + cmp r0, 0 + bne _08062C66 + mov r1, r8 + cmp r1, 0 + beq _08062C7A + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062C7A +_08062C66: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062C7A: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062C94: .4byte gUnknown_839FD5D + thumb_func_end sub_8062BE0 + + thumb_func_start cph_IM_DIFFERENT +cph_IM_DIFFERENT: @ 8062C98 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r1, _08062CDC @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + bl state_to_direction + bl sub_806413C + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08062CDC: .4byte gUnknown_839FD5D + thumb_func_end cph_IM_DIFFERENT + + thumb_func_start sub_8062CE0 +sub_8062CE0: @ 8062CE0 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062D94 @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl state_to_direction + adds r6, r0, 0 + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + adds r1, r6, 0 + mov r2, sp + adds r3, r5, 0 + bl ObjectEventMoveDestCoords + adds r0, r6, 0 + bl sub_8064194 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl npc_block_way + lsls r0, 24 + cmp r0, 0 + bne _08062D66 + mov r1, r8 + cmp r1, 0 + beq _08062D7A + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062D7A +_08062D66: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062D7A: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062D94: .4byte gUnknown_839FD5D + thumb_func_end sub_8062CE0 + + thumb_func_start oac_hopping +oac_hopping: @ 8062D98 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r4, r0, 0 + adds r7, r1, 0 + mov r8, r3 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r1, _08062E5C @ =gUnknown_839FD5D + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r6, 0 + bl state_to_direction + adds r6, r0, 0 + ldrh r1, [r4, 0x10] + add r0, sp, 0x4 + strh r1, [r0] + ldrh r0, [r4, 0x12] + mov r5, sp + adds r5, 0x6 + strh r0, [r5] + movs r0, 0x2 + str r0, [sp] + adds r0, r6, 0 + add r1, sp, 0x4 + adds r2, r5, 0 + movs r3, 0x2 + bl sub_8063A6C + adds r0, r6, 0 + bl GetJumpLedgeAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 + add r0, sp, 0x4 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + adds r0, r4, 0 + adds r3, r6, 0 + bl npc_block_way + lsls r0, 24 + cmp r0, 0 + bne _08062E2C + mov r1, r8 + cmp r1, 0 + beq _08062E40 + add r0, sp, 0x4 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08062E40 +_08062E2C: + adds r0, r6, 0 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl sub_80645C8 +_08062E40: + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x2 + strh r0, [r7, 0x30] + movs r0, 0x1 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062E5C: .4byte gUnknown_839FD5D + thumb_func_end oac_hopping + + thumb_func_start sub_8062E60 +sub_8062E60: @ 8062E60 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08062E7C @ =gObjectEvents + adds r0, r2 + ldr r2, _08062E80 @ =sub_8062E84 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_08062E7C: .4byte gObjectEvents +_08062E80: .4byte sub_8062E84 + thumb_func_end sub_8062E60 + + thumb_func_start sub_8062E84 +sub_8062E84: @ 8062E84 + push {r4,lr} + ldr r3, _08062EA0 @ =gUnknown_83A63BC + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08062EA0: .4byte gUnknown_83A63BC + thumb_func_end sub_8062E84 + + thumb_func_start mss_08062EA4 +mss_08062EA4: @ 8062EA4 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + ldr r2, _08062EC8 @ =gObjectEvents + ldr r3, _08062ECC @ =gPlayerAvatar + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1C] + cmp r0, 0xFF + beq _08062EC4 + ldrb r0, [r3, 0x3] + cmp r0, 0x2 + bne _08062ED0 +_08062EC4: + movs r0, 0 + b _08062EF8 + .align 2, 0 +_08062EC8: .4byte gObjectEvents +_08062ECC: .4byte gPlayerAvatar +_08062ED0: + ldr r5, _08062F00 @ =gUnknown_83A6390 + bl player_get_x22 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 22 + adds r4, r5 + bl player_get_direction_upper_nybble + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r3, _08062F04 @ =MetatileBehavior_IsTallGrass + ldr r4, [r4] + adds r0, r6, 0 + adds r1, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r0, 24 +_08062EF8: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08062F00: .4byte gUnknown_83A6390 +_08062F04: .4byte MetatileBehavior_IsTallGrass + thumb_func_end mss_08062EA4 + + thumb_func_start ObjectEventCB_TreeDisguise +ObjectEventCB_TreeDisguise: @ 8062F08 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _08062F6C @ =gObjectEvents + adds r4, r1, r0 + adds r6, r4, 0 + adds r6, 0x21 + ldrb r0, [r6] + cmp r0, 0 + beq _08062F30 + cmp r0, 0x1 + bne _08062F50 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08062F50 +_08062F30: + ldr r1, _08062F70 @ =gFieldEffectArguments + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + adds r0, r4, 0 + bl ObjectEventGetLocalIdAndMap + movs r0, 0x1C + bl FieldEffectStart + strb r0, [r4, 0x1A] + movs r0, 0x1 + strb r0, [r6] + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] +_08062F50: + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08062F6C @ =gObjectEvents + adds r0, r1 + ldr r2, _08062F74 @ =sub_8062F78 + adds r1, r5, 0 + bl ObjectEventStep + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08062F6C: .4byte gObjectEvents +_08062F70: .4byte gFieldEffectArguments +_08062F74: .4byte sub_8062F78 + thumb_func_end ObjectEventCB_TreeDisguise + + thumb_func_start sub_8062F78 +sub_8062F78: @ 8062F78 + push {lr} + bl npc_reset + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8062F78 + + thumb_func_start ObjectEventCB_MountainDisguise +ObjectEventCB_MountainDisguise: @ 8062F84 + push {r4-r6,lr} + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _08062FE8 @ =gObjectEvents + adds r4, r1, r0 + adds r6, r4, 0 + adds r6, 0x21 + ldrb r0, [r6] + cmp r0, 0 + beq _08062FAC + cmp r0, 0x1 + bne _08062FCC + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08062FCC +_08062FAC: + ldr r1, _08062FEC @ =gFieldEffectArguments + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + adds r0, r4, 0 + bl ObjectEventGetLocalIdAndMap + movs r0, 0x1D + bl FieldEffectStart + strb r0, [r4, 0x1A] + movs r0, 0x1 + strb r0, [r6] + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] +_08062FCC: + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08062FE8 @ =gObjectEvents + adds r0, r1 + ldr r2, _08062FF0 @ =sub_8062F78 + adds r1, r5, 0 + bl ObjectEventStep + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08062FE8: .4byte gObjectEvents +_08062FEC: .4byte gFieldEffectArguments +_08062FF0: .4byte sub_8062F78 + thumb_func_end ObjectEventCB_MountainDisguise + + thumb_func_start ObjectEventCB_Hidden1 +ObjectEventCB_Hidden1: @ 8062FF4 + push {r4,lr} + adds r3, r0, 0 + movs r1, 0x3C + ldrsh r0, [r3, r1] + ldr r4, _08063050 @ =gObjectEvents + cmp r0, 0 + bne _08063034 + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldrb r1, [r0, 0x3] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0, 0x3] + adds r2, r3, 0 + adds r2, 0x42 + ldrb r1, [r2] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r3, 0x5] + movs r1, 0xC + orrs r0, r1 + strb r0, [r3, 0x5] + ldrh r0, [r3, 0x3C] + adds r0, 0x1 + strh r0, [r3, 0x3C] +_08063034: + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r2, _08063054 @ =sub_8063058 + adds r1, r3, 0 + bl ObjectEventStep + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08063050: .4byte gObjectEvents +_08063054: .4byte sub_8063058 + thumb_func_end ObjectEventCB_Hidden1 + + thumb_func_start sub_8063058 +sub_8063058: @ 8063058 + push {r4,lr} + ldr r3, _08063074 @ =gUnknown_83A63C8 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063074: .4byte gUnknown_83A63C8 + thumb_func_end sub_8063058 + + thumb_func_start sub_8063078 +sub_8063078: @ 8063078 + push {lr} + bl npc_reset + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8063078 + + thumb_func_start sub_8063084 +sub_8063084: @ 8063084 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08063096 + movs r0, 0 + strh r0, [r4, 0x30] +_08063096: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8063084 + + thumb_func_start sub_80630A0 +sub_80630A0: @ 80630A0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080630BC @ =gObjectEvents + adds r0, r2 + ldr r2, _080630C0 @ =sub_80630C4 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080630BC: .4byte gObjectEvents +_080630C0: .4byte sub_80630C4 + thumb_func_end sub_80630A0 + + thumb_func_start sub_80630C4 +sub_80630C4: @ 80630C4 + push {r4,lr} + ldr r3, _080630E0 @ =gUnknown_83A63CC + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080630E0: .4byte gUnknown_83A63CC + thumb_func_end sub_80630C4 + + thumb_func_start sub_80630E4 +sub_80630E4: @ 80630E4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl npc_reset + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetStepInPlaceDelay16AnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80630E4 + + thumb_func_start sub_8063110 +sub_8063110: @ 8063110 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806312C @ =gObjectEvents + adds r0, r2 + ldr r2, _08063130 @ =sub_8063134 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_0806312C: .4byte gObjectEvents +_08063130: .4byte sub_8063134 + thumb_func_end sub_8063110 + + thumb_func_start sub_8063134 +sub_8063134: @ 8063134 + push {r4,lr} + ldr r3, _08063150 @ =gUnknown_83A63D4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063150: .4byte gUnknown_83A63D4 + thumb_func_end sub_8063134 + + thumb_func_start sub_8063154 +sub_8063154: @ 8063154 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl npc_reset + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8064270 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8063154 + + thumb_func_start sub_8063180 +sub_8063180: @ 8063180 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806319C @ =gObjectEvents + adds r0, r2 + ldr r2, _080631A0 @ =sub_80631A4 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_0806319C: .4byte gObjectEvents +_080631A0: .4byte sub_80631A4 + thumb_func_end sub_8063180 + + thumb_func_start sub_80631A4 +sub_80631A4: @ 80631A4 + push {r4,lr} + ldr r3, _080631C0 @ =gUnknown_83A63DC + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080631C0: .4byte gUnknown_83A63DC + thumb_func_end sub_80631A4 + + thumb_func_start sub_80631C4 +sub_80631C4: @ 80631C4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl npc_reset + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetStepInPlaceDelay4AnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80631C4 + + thumb_func_start sub_80631F0 +sub_80631F0: @ 80631F0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0806320C @ =gObjectEvents + adds r0, r2 + ldr r2, _08063210 @ =sub_8063214 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_0806320C: .4byte gObjectEvents +_08063210: .4byte sub_8063214 + thumb_func_end sub_80631F0 + + thumb_func_start sub_8063214 +sub_8063214: @ 8063214 + push {r4,lr} + ldr r3, _08063230 @ =gUnknown_83A63E4 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063230: .4byte gUnknown_83A63E4 + thumb_func_end sub_8063214 + + thumb_func_start sub_8063234 +sub_8063234: @ 8063234 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl npc_reset + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063EB8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80645C8 + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8063234 + + thumb_func_start sub_8063268 +sub_8063268: @ 8063268 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + bne _0806327A + movs r0, 0 + b _08063280 +_0806327A: + movs r0, 0x2 + strh r0, [r4, 0x30] + movs r0, 0x1 +_08063280: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8063268 + + thumb_func_start sub_8063288 +sub_8063288: @ 8063288 + ldrb r2, [r0] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0 + bx lr + thumb_func_end sub_8063288 + + thumb_func_start sub_8063298 +sub_8063298: @ 8063298 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080632B4 @ =gObjectEvents + adds r0, r2 + ldr r2, _080632B8 @ =sub_8063304 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080632B4: .4byte gObjectEvents +_080632B8: .4byte sub_8063304 + thumb_func_end sub_8063298 + + thumb_func_start sub_80632BC +sub_80632BC: @ 80632BC + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080632D8 @ =gObjectEvents + adds r0, r2 + ldr r2, _080632DC @ =sub_8063324 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080632D8: .4byte gObjectEvents +_080632DC: .4byte sub_8063324 + thumb_func_end sub_80632BC + + thumb_func_start sub_80632E0 +sub_80632E0: @ 80632E0 + push {lr} + adds r1, r0, 0 + movs r0, 0x2E + ldrsh r2, [r1, r0] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _080632FC @ =gObjectEvents + adds r0, r2 + ldr r2, _08063300 @ =sub_8063344 + bl ObjectEventStep + pop {r0} + bx r0 + .align 2, 0 +_080632FC: .4byte gObjectEvents +_08063300: .4byte sub_8063344 + thumb_func_end sub_80632E0 + + thumb_func_start sub_8063304 +sub_8063304: @ 8063304 + push {r4,lr} + ldr r3, _08063320 @ =gUnknown_83A63F0 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063320: .4byte gUnknown_83A63F0 + thumb_func_end sub_8063304 + + thumb_func_start sub_8063324 +sub_8063324: @ 8063324 + push {r4,lr} + ldr r3, _08063340 @ =gUnknown_83A63FC + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063340: .4byte gUnknown_83A63FC + thumb_func_end sub_8063324 + + thumb_func_start sub_8063344 +sub_8063344: @ 8063344 + push {r4,lr} + ldr r3, _08063360 @ =gUnknown_83A6404 + movs r4, 0x30 + ldrsh r2, [r1, r4] + lsls r2, 2 + adds r2, r3 + ldr r2, [r2] + bl _call_via_r2 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063360: .4byte gUnknown_83A6404 + thumb_func_end sub_8063344 + + thumb_func_start sub_8063364 +sub_8063364: @ 8063364 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl npc_reset + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x98 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r4, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8063364 + + thumb_func_start sub_8063384 +sub_8063384: @ 8063384 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + bne _08063396 + movs r0, 0 + b _0806339C +_08063396: + movs r0, 0x2 + strh r0, [r4, 0x30] + movs r0, 0x1 +_0806339C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8063384 + + thumb_func_start sub_80633A4 +sub_80633A4: @ 80633A4 + ldrb r2, [r0] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0 + bx lr + thumb_func_end sub_80633A4 + + thumb_func_start sub_80633B4 +sub_80633B4: @ 80633B4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl npc_reset + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x99 + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r4, 0x30] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80633B4 + + thumb_func_start sub_80633D4 +sub_80633D4: @ 80633D4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl npc_reset + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x9A + bl sub_80645C8 + movs r0, 0x1 + strh r0, [r4, 0x30] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80633D4 + + thumb_func_start sub_80633F4 +sub_80633F4: @ 80633F4 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064588 + lsls r0, 24 + cmp r0, 0 + beq _08063406 + movs r0, 0 + strh r0, [r4, 0x30] +_08063406: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80633F4 + + thumb_func_start npc_reset +npc_reset: @ 8063410 + ldrb r3, [r0] + movs r2, 0x3 + negs r2, r2 + ands r2, r3 + movs r3, 0x41 + negs r3, r3 + ands r2, r3 + movs r3, 0x7F + ands r2, r3 + strb r2, [r0] + movs r2, 0xFF + strb r2, [r0, 0x1C] + movs r0, 0 + strh r0, [r1, 0x30] + bx lr + thumb_func_end npc_reset + + thumb_func_start ObjectEventDirectionToImageAnimId +ObjectEventDirectionToImageAnimId: @ 8063430 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806343C @ =gUnknown_83A640C + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806343C: .4byte gUnknown_83A640C + thumb_func_end ObjectEventDirectionToImageAnimId + + thumb_func_start get_go_image_anim_num +get_go_image_anim_num: @ 8063440 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806344C @ =gUnknown_83A6415 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806344C: .4byte gUnknown_83A6415 + thumb_func_end get_go_image_anim_num + + thumb_func_start get_go_fast_image_anim_num +get_go_fast_image_anim_num: @ 8063450 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806345C @ =gUnknown_83A641E + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806345C: .4byte gUnknown_83A641E + thumb_func_end get_go_fast_image_anim_num + + thumb_func_start get_go_faster_image_anim_num +get_go_faster_image_anim_num: @ 8063460 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806346C @ =gUnknown_83A6427 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806346C: .4byte gUnknown_83A6427 + thumb_func_end get_go_faster_image_anim_num + + thumb_func_start sub_8063470 +sub_8063470: @ 8063470 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806347C @ =gUnknown_83A6430 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806347C: .4byte gUnknown_83A6430 + thumb_func_end sub_8063470 + + thumb_func_start sub_8063480 +sub_8063480: @ 8063480 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806348C @ =gUnknown_83A6439 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806348C: .4byte gUnknown_83A6439 + thumb_func_end sub_8063480 + + thumb_func_start sub_8063490 +sub_8063490: @ 8063490 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806349C @ =gUnknown_83A6442 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806349C: .4byte gUnknown_83A6442 + thumb_func_end sub_8063490 + + thumb_func_start sub_80634A0 +sub_80634A0: @ 80634A0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634AC @ =gUnknown_83A644B + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634AC: .4byte gUnknown_83A644B + thumb_func_end sub_80634A0 + + thumb_func_start sub_80634B0 +sub_80634B0: @ 80634B0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634BC @ =gUnknown_83A6454 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634BC: .4byte gUnknown_83A6454 + thumb_func_end sub_80634B0 + + thumb_func_start sub_80634C0 +sub_80634C0: @ 80634C0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634CC @ =gUnknown_83A645D + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634CC: .4byte gUnknown_83A645D + thumb_func_end sub_80634C0 + + thumb_func_start sub_80634D0 +sub_80634D0: @ 80634D0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634DC @ =gUnknown_83A6466 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634DC: .4byte gUnknown_83A6466 + thumb_func_end sub_80634D0 + + thumb_func_start sub_80634E0 +sub_80634E0: @ 80634E0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634EC @ =gUnknown_83A646F + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634EC: .4byte gUnknown_83A646F + thumb_func_end sub_80634E0 + + thumb_func_start sub_80634F0 +sub_80634F0: @ 80634F0 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080634FC @ =gUnknown_83A6478 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_080634FC: .4byte gUnknown_83A6478 + thumb_func_end sub_80634F0 + + thumb_func_start sub_8063500 +sub_8063500: @ 8063500 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806350C @ =gUnknown_83A6481 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806350C: .4byte gUnknown_83A6481 + thumb_func_end sub_8063500 + + thumb_func_start sub_8063510 +sub_8063510: @ 8063510 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806351C @ =gUnknown_83A648A + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806351C: .4byte gUnknown_83A648A + thumb_func_end sub_8063510 + + thumb_func_start get_run_image_anim_num +get_run_image_anim_num: @ 8063520 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0806352C @ =gUnknown_83A6493 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806352C: .4byte gUnknown_83A6493 + thumb_func_end get_run_image_anim_num + + thumb_func_start sub_8063530 +sub_8063530: @ 8063530 + push {lr} + adds r2, r0, 0 + ldr r1, _08063538 @ =gUnknown_83A3698 + b _08063548 + .align 2, 0 +_08063538: .4byte gUnknown_83A3698 +_0806353C: + ldr r0, [r1] + cmp r0, r2 + bne _08063546 + adds r0, r1, 0 + b _08063550 +_08063546: + adds r1, 0x8 +_08063548: + ldr r0, [r1] + cmp r0, 0 + bne _0806353C + movs r0, 0 +_08063550: + pop {r1} + bx r1 + thumb_func_end sub_8063530 + + thumb_func_start npc_apply_anim_looping +npc_apply_anim_looping: @ 8063554 + push {r4,lr} + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r0, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _08063596 + adds r0, r4, 0 + adds r0, 0x2A + strb r2, [r0] + ldr r0, [r4, 0x8] + bl sub_8063530 + adds r1, r4, 0 + adds r1, 0x2B + cmp r0, 0 + beq _0806358E + ldrb r2, [r1] + ldrb r3, [r0, 0x4] + cmp r2, r3 + bne _08063584 + ldrb r0, [r0, 0x7] + b _0806358C +_08063584: + ldrb r3, [r0, 0x5] + cmp r2, r3 + bne _0806358E + ldrb r0, [r0, 0x6] +_0806358C: + strb r0, [r1] +_0806358E: + ldrb r1, [r1] + adds r0, r4, 0 + bl SeekSpriteAnim +_08063596: + pop {r4} + pop {r0} + bx r0 + thumb_func_end npc_apply_anim_looping + + thumb_func_start obj_npc_animation_step +obj_npc_animation_step: @ 806359C + push {r4,lr} + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r0, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _080635D4 + adds r0, r4, 0 + adds r0, 0x2A + strb r2, [r0] + ldr r0, [r4, 0x8] + bl sub_8063530 + adds r2, r0, 0 + cmp r2, 0 + beq _080635D4 + ldrb r1, [r2, 0x5] + adds r0, r4, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldrb r3, [r2, 0x4] + cmp r0, r3 + bhi _080635CE + ldrb r1, [r2, 0x4] +_080635CE: + adds r0, r4, 0 + bl SeekSpriteAnim +_080635D4: + pop {r4} + pop {r0} + bx r0 + thumb_func_end obj_npc_animation_step + + thumb_func_start sub_80635DC +sub_80635DC: @ 80635DC + push {lr} + lsls r1, 16 + lsrs r1, 16 + lsls r3, 16 + lsrs r3, 16 + lsls r0, 16 + asrs r0, 16 + lsls r2, 16 + asrs r2, 16 + cmp r0, r2 + ble _080635F6 + movs r0, 0x3 + b _0806360C +_080635F6: + cmp r0, r2 + bge _080635FE + movs r0, 0x4 + b _0806360C +_080635FE: + lsls r1, 16 + lsls r0, r3, 16 + cmp r1, r0 + bgt _0806360A + movs r0, 0x1 + b _0806360C +_0806360A: + movs r0, 0x2 +_0806360C: + pop {r1} + bx r1 + thumb_func_end sub_80635DC + + thumb_func_start SetTrainerMovementType +SetTrainerMovementType: @ 8063610 + push {r4,lr} + mov r12, r0 + lsls r1, 24 + lsrs r1, 24 + movs r3, 0 + strb r1, [r0, 0x6] + adds r0, 0x21 + strb r3, [r0] + adds r0, 0x1 + strb r3, [r0] + ldr r4, _08063654 @ =gSprites + mov r0, r12 + ldrb r2, [r0, 0x4] + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r2, r4, 0 + adds r2, 0x1C + adds r0, r2 + ldr r2, _08063658 @ =gUnknown_839FBC8 + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + str r1, [r0] + mov r0, r12 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + strh r3, [r0, 0x30] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08063654: .4byte gSprites +_08063658: .4byte gUnknown_839FBC8 + thumb_func_end SetTrainerMovementType + + thumb_func_start GetTrainerFacingDirectionMovementType +GetTrainerFacingDirectionMovementType: @ 806365C + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08063668 @ =gUnknown_83A649C + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08063668: .4byte gUnknown_83A649C + thumb_func_end GetTrainerFacingDirectionMovementType + + thumb_func_start npc_block_way__next_tile +npc_block_way__next_tile: @ 806366C + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + lsls r5, r1, 24 + lsrs r5, 24 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl MoveCoords + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r4, r0] + adds r0, r6, 0 + adds r3, r5, 0 + bl npc_block_way + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end npc_block_way__next_tile + + thumb_func_start npc_block_way +npc_block_way: @ 80636AC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r6, r0, 0 + lsls r1, 16 + lsls r2, 16 + lsls r3, 24 + lsrs r7, r3, 24 + mov r8, r7 + lsrs r0, r1, 16 + mov r9, r0 + asrs r5, r1, 16 + lsrs r0, r2, 16 + mov r10, r0 + asrs r4, r2, 16 + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl IsCoordOutsideObjectEventMovementRect + lsls r0, 24 + cmp r0, 0 + beq _080636E2 + movs r0, 0x1 + b _08063762 +_080636E2: + adds r0, r5, 0 + adds r1, r4, 0 + bl MapGridIsImpassableAt + lsls r0, 24 + cmp r0, 0 + bne _08063724 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapBorderIdAt + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _08063724 + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + adds r3, r7, 0 + bl IsMetatileDirectionallyImpassable + lsls r0, 24 + cmp r0, 0 + bne _08063724 + ldrb r0, [r6, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _08063728 + mov r0, r8 + bl CanCameraMoveInDirection + cmp r0, 0 + bne _08063728 +_08063724: + movs r0, 0x2 + b _08063762 +_08063728: + ldrb r0, [r6, 0xB] + lsls r0, 28 + lsrs r0, 28 + mov r2, r9 + lsls r1, r2, 16 + asrs r5, r1, 16 + mov r2, r10 + lsls r1, r2, 16 + asrs r4, r1, 16 + adds r1, r5, 0 + adds r2, r4, 0 + bl IsZCoordMismatchAt + lsls r0, 24 + cmp r0, 0 + beq _0806374C + movs r0, 0x3 + b _08063762 +_0806374C: + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl CheckForCollisionBetweenObjectEvents + lsls r0, 24 + cmp r0, 0 + bne _08063760 + movs r0, 0 + b _08063762 +_08063760: + movs r0, 0x4 +_08063762: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end npc_block_way + + thumb_func_start sub_8063770 +sub_8063770: @ 8063770 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + adds r7, r0, 0 + lsls r1, 16 + lsls r2, 16 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + lsrs r0, r1, 16 + mov r9, r0 + asrs r6, r1, 16 + lsrs r0, r2, 16 + mov r10, r0 + asrs r5, r2, 16 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl IsCoordOutsideObjectEventMovementRect + lsls r0, 24 + lsrs r0, 24 + negs r1, r0 + orrs r1, r0 + lsrs r4, r1, 31 + adds r0, r6, 0 + adds r1, r5, 0 + bl MapGridIsImpassableAt + lsls r0, 24 + cmp r0, 0 + bne _080637E8 + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapBorderIdAt + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _080637E8 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + mov r3, r8 + bl IsMetatileDirectionallyImpassable + lsls r0, 24 + cmp r0, 0 + bne _080637E8 + ldrb r0, [r7, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _080637EC + mov r0, r8 + bl CanCameraMoveInDirection + cmp r0, 0 + bne _080637EC +_080637E8: + movs r0, 0x2 + orrs r4, r0 +_080637EC: + ldrb r0, [r7, 0xB] + lsls r0, 28 + lsrs r0, 28 + mov r2, r9 + lsls r1, r2, 16 + asrs r6, r1, 16 + mov r2, r10 + lsls r1, r2, 16 + asrs r5, r1, 16 + adds r1, r6, 0 + adds r2, r5, 0 + bl IsZCoordMismatchAt + lsls r0, 24 + cmp r0, 0 + beq _08063814 + movs r0, 0x4 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_08063814: + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl CheckForCollisionBetweenObjectEvents + lsls r0, 24 + cmp r0, 0 + beq _0806382C + movs r0, 0x8 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_0806382C: + adds r0, r4, 0 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8063770 + + thumb_func_start IsCoordOutsideObjectEventMovementRect +IsCoordOutsideObjectEventMovementRect: @ 806383C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 16 + lsrs r3, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + ldrb r1, [r4, 0x19] + movs r0, 0xF + ands r0, r1 + cmp r0, 0 + beq _08063874 + lsls r1, 28 + lsrs r2, r1, 28 + ldrh r0, [r4, 0xC] + subs r2, r0, r2 + lsrs r1, 28 + adds r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + lsls r2, 16 + lsls r0, r3, 16 + asrs r3, r0, 16 + cmp r2, r0 + bgt _080638A0 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r3 + blt _080638A0 +_08063874: + ldrb r1, [r4, 0x19] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + beq _080638A4 + lsls r1, 24 + lsrs r2, r1, 28 + ldrh r0, [r4, 0xE] + subs r2, r0, r2 + lsrs r1, 28 + adds r0, r1 + lsls r0, 16 + lsrs r1, r0, 16 + lsls r2, 16 + lsls r0, r5, 16 + asrs r3, r0, 16 + cmp r2, r0 + bgt _080638A0 + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r3 + bge _080638A4 +_080638A0: + movs r0, 0x1 + b _080638A6 +_080638A4: + movs r0, 0 +_080638A6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end IsCoordOutsideObjectEventMovementRect + + thumb_func_start IsMetatileDirectionallyImpassable +IsMetatileDirectionallyImpassable: @ 80638AC + push {r4-r7,lr} + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r7, r2, 16 + lsls r3, 24 + ldr r1, _080638F4 @ =gUnknown_83A64A8 + lsrs r3, 22 + subs r5, r3, 0x4 + adds r1, r5, r1 + ldrb r0, [r0, 0x1E] + ldr r1, [r1] + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080638EE + ldr r4, _080638F8 @ =gUnknown_83A64B8 + adds r4, r5, r4 + lsls r0, r6, 16 + asrs r0, 16 + lsls r1, r7, 16 + asrs r1, 16 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + ldr r1, [r4] + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _080638FC +_080638EE: + movs r0, 0x1 + b _080638FE + .align 2, 0 +_080638F4: .4byte gUnknown_83A64A8 +_080638F8: .4byte gUnknown_83A64B8 +_080638FC: + movs r0, 0 +_080638FE: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end IsMetatileDirectionallyImpassable + + thumb_func_start CheckForCollisionBetweenObjectEvents +CheckForCollisionBetweenObjectEvents: @ 8063904 + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r7, r1, 16 + movs r4, 0 + lsls r2, 16 + asrs r5, r2, 16 +_08063912: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + ldr r1, _08063968 @ =gObjectEvents + adds r2, r0, r1 + ldrb r0, [r2] + lsls r0, 31 + cmp r0, 0 + beq _0806396C + cmp r2, r6 + beq _0806396C + movs r0, 0x10 + ldrsh r1, [r2, r0] + lsls r0, r7, 16 + asrs r3, r0, 16 + cmp r1, r3 + bne _0806393C + movs r1, 0x12 + ldrsh r0, [r2, r1] + cmp r0, r5 + beq _0806394C +_0806393C: + movs r1, 0x14 + ldrsh r0, [r2, r1] + cmp r0, r3 + bne _0806396C + movs r1, 0x16 + ldrsh r0, [r2, r1] + cmp r0, r5 + bne _0806396C +_0806394C: + ldrb r0, [r6, 0xB] + lsls r0, 28 + lsrs r0, 28 + ldrb r1, [r2, 0xB] + lsls r1, 28 + lsrs r1, 28 + bl AreZCoordsCompatible + lsls r0, 24 + cmp r0, 0 + beq _0806396C + movs r0, 0x1 + b _08063978 + .align 2, 0 +_08063968: .4byte gObjectEvents +_0806396C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08063912 + movs r0, 0 +_08063978: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CheckForCollisionBetweenObjectEvents + + thumb_func_start IsBerryTreeSparkling +IsBerryTreeSparkling: @ 8063980 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _080639CC + ldr r3, _080639C4 @ =gSprites + ldr r2, _080639C8 @ =gObjectEvents + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r1, [r0, 0x3C] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080639CC + movs r0, 0x1 + b _080639CE + .align 2, 0 +_080639C4: .4byte gSprites +_080639C8: .4byte gObjectEvents +_080639CC: + movs r0, 0 +_080639CE: + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end IsBerryTreeSparkling + + thumb_func_start sub_80639D4 +sub_80639D4: @ 80639D4 + push {lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _08063A12 + ldr r3, _08063A18 @ =gSprites + ldr r2, _08063A1C @ =gObjectEvents + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r3 + ldrh r2, [r1, 0x3C] + movs r0, 0x4 + orrs r0, r2 + strh r0, [r1, 0x3C] +_08063A12: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08063A18: .4byte gSprites +_08063A1C: .4byte gObjectEvents + thumb_func_end sub_80639D4 + + thumb_func_start MoveCoords +MoveCoords: @ 8063A20 + push {r4,lr} + lsls r0, 24 + ldr r3, _08063A40 @ =gUnknown_83A64C8 + lsrs r0, 22 + adds r0, r3 + ldrh r3, [r0] + ldrh r4, [r1] + adds r3, r4 + strh r3, [r1] + ldrh r0, [r0, 0x2] + ldrh r1, [r2] + adds r0, r1 + strh r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08063A40: .4byte gUnknown_83A64C8 + thumb_func_end MoveCoords + + thumb_func_start sub_8063A44 +sub_8063A44: @ 8063A44 + push {r4,lr} + lsls r0, 24 + ldr r3, _08063A68 @ =gUnknown_83A64C8 + lsrs r0, 22 + adds r0, r3 + ldrh r3, [r0] + lsls r3, 4 + ldrh r4, [r1] + adds r3, r4 + strh r3, [r1] + ldrh r0, [r0, 0x2] + lsls r0, 4 + ldrh r1, [r2] + adds r0, r1 + strh r0, [r2] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08063A68: .4byte gUnknown_83A64C8 + thumb_func_end sub_8063A44 + + thumb_func_start sub_8063A6C +sub_8063A6C: @ 8063A6C + push {r4-r7,lr} + adds r4, r1, 0 + ldr r1, [sp, 0x14] + lsls r0, 24 + lsls r3, 16 + lsrs r3, 16 + adds r7, r3, 0 + lsls r1, 16 + lsrs r6, r1, 16 + mov r12, r6 + ldr r1, _08063AD0 @ =gUnknown_83A64C8 + lsrs r0, 22 + adds r5, r0, r1 + movs r0, 0 + ldrsh r1, [r5, r0] + cmp r1, 0 + ble _08063A98 + lsls r0, r3, 16 + asrs r0, 16 + ldrh r3, [r4] + adds r0, r3 + strh r0, [r4] +_08063A98: + cmp r1, 0 + bge _08063AA6 + ldrh r1, [r4] + lsls r0, r7, 16 + asrs r0, 16 + subs r1, r0 + strh r1, [r4] +_08063AA6: + movs r0, 0x2 + ldrsh r1, [r5, r0] + cmp r1, 0 + ble _08063AB8 + lsls r0, r6, 16 + asrs r0, 16 + ldrh r3, [r2] + adds r0, r3 + strh r0, [r2] +_08063AB8: + cmp r1, 0 + bge _08063AC8 + ldrh r1, [r2] + mov r3, r12 + lsls r0, r3, 16 + asrs r0, 16 + subs r1, r0 + strh r1, [r2] +_08063AC8: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08063AD0: .4byte gUnknown_83A64C8 + thumb_func_end sub_8063A6C + + thumb_func_start sub_8063AD4 +sub_8063AD4: @ 8063AD4 + push {r4,r5,lr} + ldr r5, _08063B10 @ =gSaveBlock1Ptr + ldr r4, [r5] + ldrh r4, [r4] + lsls r0, 16 + asrs r0, 16 + subs r0, r4 + lsls r0, 4 + strh r0, [r2] + ldr r0, [r5] + ldrh r0, [r0, 0x2] + lsls r1, 16 + asrs r1, 16 + subs r1, r0 + lsls r1, 4 + strh r1, [r3] + ldr r1, _08063B14 @ =gUnknown_300506C + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r2] + ldr r1, _08063B18 @ =gUnknown_3005068 + ldrh r0, [r3] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r3] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08063B10: .4byte gSaveBlock1Ptr +_08063B14: .4byte gUnknown_300506C +_08063B18: .4byte gUnknown_3005068 + thumb_func_end sub_8063AD4 + + thumb_func_start sub_8063B1C +sub_8063B1C: @ 8063B1C + push {r4-r7,lr} + adds r7, r2, 0 + mov r12, r3 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r0, _08063BB0 @ =gUnknown_300506C + ldrh r0, [r0] + negs r0, r0 + ldr r1, _08063BB4 @ =gUnknown_3005050 + ldr r2, [r1, 0x10] + subs r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, _08063BB8 @ =gUnknown_3005068 + ldrh r0, [r0] + negs r0, r0 + ldr r1, [r1, 0x14] + subs r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r2, 0 + ble _08063B56 + lsls r0, r3, 16 + movs r3, 0x80 + lsls r3, 13 + adds r0, r3 + lsrs r3, r0, 16 +_08063B56: + cmp r2, 0 + bge _08063B62 + lsls r0, r3, 16 + ldr r2, _08063BBC @ =0xfff00000 + adds r0, r2 + lsrs r3, r0, 16 +_08063B62: + cmp r1, 0 + ble _08063B70 + lsls r0, r4, 16 + movs r2, 0x80 + lsls r2, 13 + adds r0, r2 + lsrs r4, r0, 16 +_08063B70: + cmp r1, 0 + bge _08063B7C + lsls r0, r4, 16 + ldr r1, _08063BBC @ =0xfff00000 + adds r0, r1 + lsrs r4, r0, 16 +_08063B7C: + ldr r2, _08063BC0 @ =gSaveBlock1Ptr + ldr r0, [r2] + ldrh r1, [r0] + lsls r0, r5, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 4 + lsls r1, r3, 16 + asrs r1, 16 + adds r1, r0 + strh r1, [r7] + ldr r0, [r2] + ldrh r1, [r0, 0x2] + lsls r0, r6, 16 + asrs r0, 16 + subs r0, r1 + lsls r0, 4 + lsls r1, r4, 16 + asrs r1, 16 + adds r1, r0 + mov r2, r12 + strh r1, [r2] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08063BB0: .4byte gUnknown_300506C +_08063BB4: .4byte gUnknown_3005050 +_08063BB8: .4byte gUnknown_3005068 +_08063BBC: .4byte 0xfff00000 +_08063BC0: .4byte gSaveBlock1Ptr + thumb_func_end sub_8063B1C + + thumb_func_start sub_8063BC4 +sub_8063BC4: @ 8063BC4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r6, r0, 0 + mov r8, r1 + adds r4, r2, 0 + adds r5, r3, 0 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + movs r1, 0 + ldrsh r0, [r6, r1] + mov r2, r8 + movs r3, 0 + ldrsh r1, [r2, r3] + adds r2, r6, 0 + mov r3, r8 + bl sub_8063B1C + lsls r4, 16 + asrs r4, 16 + ldrh r0, [r6] + adds r4, r0 + strh r4, [r6] + lsls r5, 16 + asrs r5, 16 + mov r1, r8 + ldrh r1, [r1] + adds r5, r1 + mov r2, r8 + strh r5, [r2] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8063BC4 + + thumb_func_start GetObjectEventMovingCameraOffset +GetObjectEventMovingCameraOffset: @ 8063C10 + push {lr} + adds r2, r0, 0 + movs r0, 0 + strh r0, [r2] + strh r0, [r1] + ldr r3, _08063C4C @ =gUnknown_3005050 + ldr r0, [r3, 0x10] + cmp r0, 0 + ble _08063C26 + movs r0, 0x1 + strh r0, [r2] +_08063C26: + ldr r0, [r3, 0x10] + cmp r0, 0 + bge _08063C32 + ldrh r0, [r2] + subs r0, 0x1 + strh r0, [r2] +_08063C32: + ldr r2, [r3, 0x14] + cmp r2, 0 + ble _08063C3E + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_08063C3E: + cmp r2, 0 + bge _08063C48 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] +_08063C48: + pop {r0} + bx r0 + .align 2, 0 +_08063C4C: .4byte gUnknown_3005050 + thumb_func_end GetObjectEventMovingCameraOffset + + thumb_func_start ObjectEventMoveDestCoords +ObjectEventMoveDestCoords: @ 8063C50 + push {r4,lr} + lsls r1, 24 + lsrs r1, 24 + ldrh r4, [r0, 0x10] + strh r4, [r2] + ldrh r0, [r0, 0x12] + strh r0, [r3] + adds r0, r1, 0 + adds r1, r2, 0 + adds r2, r3, 0 + bl MoveCoords + pop {r4} + pop {r0} + bx r0 + thumb_func_end ObjectEventMoveDestCoords + + thumb_func_start ObjectEventIsMovementOverridden +ObjectEventIsMovementOverridden: @ 8063C70 + push {lr} + ldrb r1, [r0] + movs r0, 0x42 + ands r0, r1 + cmp r0, 0 + bne _08063C80 + movs r0, 0 + b _08063C82 +_08063C80: + movs r0, 0x1 +_08063C82: + pop {r1} + bx r1 + thumb_func_end ObjectEventIsMovementOverridden + + thumb_func_start ObjectEventIsSpecialAnimActive +ObjectEventIsSpecialAnimActive: @ 8063C88 + push {lr} + adds r1, r0, 0 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + bge _08063C9E + ldrb r0, [r1, 0x1C] + cmp r0, 0xFF + beq _08063C9E + movs r0, 0x1 + b _08063CA0 +_08063C9E: + movs r0, 0 +_08063CA0: + pop {r1} + bx r1 + thumb_func_end ObjectEventIsSpecialAnimActive + + thumb_func_start ObjectEventSetHeldMovement +ObjectEventSetHeldMovement: @ 8063CA4 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + bl sub_8112CAC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08063CC8 + adds r0, r4, 0 + bl ObjectEventIsMovementOverridden + lsls r0, 24 + cmp r0, 0 + beq _08063CCE + movs r0, 0x1 + b _08063CF4 +_08063CC8: + adds r0, r4, 0 + bl ObjectEventClearAnimIfSpecialAnimActive +_08063CCE: + adds r0, r4, 0 + bl npc_sync_anim_pause_bits + movs r3, 0 + strb r5, [r4, 0x1C] + ldrb r0, [r4] + movs r1, 0x40 + orrs r0, r1 + movs r1, 0x7F + ands r0, r1 + strb r0, [r4] + ldr r2, _08063CFC @ =gSprites + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r3, [r0, 0x32] + movs r0, 0 +_08063CF4: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08063CFC: .4byte gSprites + thumb_func_end ObjectEventSetHeldMovement + + thumb_func_start ObjectEventForceSetSpecialAnim +ObjectEventForceSetSpecialAnim: @ 8063D00 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + bl ObjectEventClearAnimIfSpecialAnimActive + adds r0, r5, 0 + adds r1, r4, 0 + bl ObjectEventSetHeldMovement + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end ObjectEventForceSetSpecialAnim + + thumb_func_start ObjectEventClearAnimIfSpecialAnimActive +ObjectEventClearAnimIfSpecialAnimActive: @ 8063D1C + push {lr} + adds r1, r0, 0 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + bge _08063D2E + adds r0, r1, 0 + bl ObjectEventClearAnim +_08063D2E: + pop {r0} + bx r0 + thumb_func_end ObjectEventClearAnimIfSpecialAnimActive + + thumb_func_start ObjectEventClearAnim +ObjectEventClearAnim: @ 8063D34 + movs r1, 0xFF + strb r1, [r0, 0x1C] + ldrb r2, [r0] + movs r1, 0x41 + negs r1, r1 + ands r1, r2 + movs r2, 0x7F + ands r1, r2 + strb r1, [r0] + ldr r3, _08063D64 @ =gSprites + ldrb r2, [r0, 0x4] + lsls r1, r2, 4 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + movs r2, 0 + strh r2, [r1, 0x30] + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r2, [r0, 0x32] + bx lr + .align 2, 0 +_08063D64: .4byte gSprites + thumb_func_end ObjectEventClearAnim + + thumb_func_start ObjectEventCheckHeldMovementStatus +ObjectEventCheckHeldMovementStatus: @ 8063D68 + push {lr} + ldrb r1, [r0] + lsls r0, r1, 25 + cmp r0, 0 + blt _08063D76 + movs r0, 0x10 + b _08063D78 +_08063D76: + lsrs r0, r1, 7 +_08063D78: + pop {r1} + bx r1 + thumb_func_end ObjectEventCheckHeldMovementStatus + + thumb_func_start ObjectEventClearHeldMovementIfFinished +ObjectEventClearHeldMovementIfFinished: @ 8063D7C + push {r4,r5,lr} + adds r5, r0, 0 + bl ObjectEventCheckHeldMovementStatus + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _08063D96 + cmp r4, 0x10 + beq _08063D96 + adds r0, r5, 0 + bl ObjectEventClearAnimIfSpecialAnimActive +_08063D96: + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end ObjectEventClearHeldMovementIfFinished + + thumb_func_start ObjectEventGetSpecialAnim +ObjectEventGetSpecialAnim: @ 8063DA0 + push {lr} + adds r1, r0, 0 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _08063DB0 + movs r0, 0xFF + b _08063DB2 +_08063DB0: + ldrb r0, [r1, 0x1C] +_08063DB2: + pop {r1} + bx r1 + thumb_func_end ObjectEventGetSpecialAnim + + thumb_func_start ObjectEventStep +ObjectEventStep: @ 8063DB8 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + bl DoGroundEffects_OnSpawn + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80679C8 + adds r0, r4, 0 + bl ObjectEventIsSpecialAnimActive + lsls r0, 24 + cmp r0, 0 + beq _08063DE2 + adds r0, r4, 0 + adds r1, r5, 0 + bl ObjectEventExecSpecialAnim + b _08063DF8 +_08063DE2: + ldrb r0, [r4, 0x1] + lsls r0, 31 + cmp r0, 0 + bne _08063DF8 +_08063DEA: + adds r0, r4, 0 + adds r1, r5, 0 + bl _call_via_r6 + lsls r0, 24 + cmp r0, 0 + bne _08063DEA +_08063DF8: + adds r0, r4, 0 + adds r1, r5, 0 + bl DoGroundEffects_OnBeginStep + adds r0, r4, 0 + adds r1, r5, 0 + bl DoGroundEffects_OnFinishStep + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_obj_transfer_image_anim_pause_flag + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80679F8 + adds r0, r4, 0 + adds r1, r5, 0 + bl ObjectEventUpdateSubpriority + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end ObjectEventStep + + thumb_func_start sub_8063E28 +sub_8063E28: @ 8063E28 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl DoGroundEffects_OnSpawn + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80679C8 + adds r0, r4, 0 + bl ObjectEventIsSpecialAnimActive + lsls r0, 24 + cmp r0, 0 + beq _08063E5C + adds r0, r5, 0 + adds r0, 0x3F + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08063E5C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064544 +_08063E5C: + ldrb r0, [r4, 0x1E] + bl MetatileBehavior_IsIce_2 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08063E78 + ldrb r0, [r4, 0x1E] + bl MetatileBehavior_IsUnknownMovement48 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08063E80 +_08063E78: + ldrb r0, [r4, 0x1] + movs r1, 0x4 + orrs r0, r1 + b _08063E88 +_08063E80: + ldrb r1, [r4, 0x1] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 +_08063E88: + strb r0, [r4, 0x1] + adds r0, r4, 0 + adds r1, r5, 0 + bl DoGroundEffects_OnBeginStep + adds r0, r4, 0 + adds r1, r5, 0 + bl DoGroundEffects_OnFinishStep + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_obj_transfer_image_anim_pause_flag + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80679F8 + adds r0, r4, 0 + adds r1, r5, 0 + bl ObjectEventUpdateSubpriority + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8063E28 + + thumb_func_start sub_8063EB8 +sub_8063EB8: @ 8063EB8 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063EE0 @ =gUnknown_83A64EC + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063ED0 + movs r4, 0 +_08063ED0: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063EE0: .4byte gUnknown_83A64EC + thumb_func_end sub_8063EB8 + + thumb_func_start sub_8063EE4 +sub_8063EE4: @ 8063EE4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063F0C @ =gUnknown_83A64F1 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063EFC + movs r4, 0 +_08063EFC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063F0C: .4byte gUnknown_83A64F1 + thumb_func_end sub_8063EE4 + + thumb_func_start sub_8063F10 +sub_8063F10: @ 8063F10 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x4 + bls _08063F1C + movs r1, 0 +_08063F1C: + ldr r0, _08063F28 @ =gUnknown_83A64F6 + adds r0, r1, r0 + ldrb r0, [r0] + pop {r1} + bx r1 + .align 2, 0 +_08063F28: .4byte gUnknown_83A64F6 + thumb_func_end sub_8063F10 + + thumb_func_start sub_8063F2C +sub_8063F2C: @ 8063F2C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063F54 @ =gUnknown_83A64FB + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063F44 + movs r4, 0 +_08063F44: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063F54: .4byte gUnknown_83A64FB + thumb_func_end sub_8063F2C + + thumb_func_start sub_8063F58 +sub_8063F58: @ 8063F58 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063F80 @ =gUnknown_83A6500 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063F70 + movs r4, 0 +_08063F70: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063F80: .4byte gUnknown_83A6500 + thumb_func_end sub_8063F58 + + thumb_func_start sub_8063F84 +sub_8063F84: @ 8063F84 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063FAC @ =gUnknown_83A6505 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063F9C + movs r4, 0 +_08063F9C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063FAC: .4byte gUnknown_83A6505 + thumb_func_end sub_8063F84 + + thumb_func_start sub_8063FB0 +sub_8063FB0: @ 8063FB0 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08063FD8 @ =gUnknown_83A650A + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063FC8 + movs r4, 0 +_08063FC8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08063FD8: .4byte gUnknown_83A650A + thumb_func_end sub_8063FB0 + + thumb_func_start sub_8063FDC +sub_8063FDC: @ 8063FDC + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064004 @ =gUnknown_83A650F + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08063FF4 + movs r4, 0 +_08063FF4: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064004: .4byte gUnknown_83A650F + thumb_func_end sub_8063FDC + + thumb_func_start sub_8064008 +sub_8064008: @ 8064008 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064030 @ =gUnknown_83A6514 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064020 + movs r4, 0 +_08064020: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064030: .4byte gUnknown_83A6514 + thumb_func_end sub_8064008 + + thumb_func_start sub_8064034 +sub_8064034: @ 8064034 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0806405C @ =gUnknown_83A6519 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0806404C + movs r4, 0 +_0806404C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806405C: .4byte gUnknown_83A6519 + thumb_func_end sub_8064034 + + thumb_func_start sub_8064060 +sub_8064060: @ 8064060 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064088 @ =gUnknown_83A651E + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064078 + movs r4, 0 +_08064078: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064088: .4byte gUnknown_83A651E + thumb_func_end sub_8064060 + + thumb_func_start sub_806408C +sub_806408C: @ 806408C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080640B4 @ =gUnknown_83A6523 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080640A4 + movs r4, 0 +_080640A4: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080640B4: .4byte gUnknown_83A6523 + thumb_func_end sub_806408C + + thumb_func_start sub_80640B8 +sub_80640B8: @ 80640B8 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080640E0 @ =gUnknown_83A6528 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080640D0 + movs r4, 0 +_080640D0: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080640E0: .4byte gUnknown_83A6528 + thumb_func_end sub_80640B8 + + thumb_func_start sub_80640E4 +sub_80640E4: @ 80640E4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0806410C @ =gUnknown_83A652D + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080640FC + movs r4, 0 +_080640FC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806410C: .4byte gUnknown_83A652D + thumb_func_end sub_80640E4 + + thumb_func_start GetJumpLedgeAnimId +GetJumpLedgeAnimId: @ 8064110 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064138 @ =gUnknown_83A6532 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064128 + movs r4, 0 +_08064128: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064138: .4byte gUnknown_83A6532 + thumb_func_end GetJumpLedgeAnimId + + thumb_func_start sub_806413C +sub_806413C: @ 806413C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064164 @ =gUnknown_83A6537 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064154 + movs r4, 0 +_08064154: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064164: .4byte gUnknown_83A6537 + thumb_func_end sub_806413C + + thumb_func_start sub_8064168 +sub_8064168: @ 8064168 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064190 @ =gUnknown_83A653C + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064180 + movs r4, 0 +_08064180: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064190: .4byte gUnknown_83A653C + thumb_func_end sub_8064168 + + thumb_func_start sub_8064194 +sub_8064194: @ 8064194 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080641BC @ =gUnknown_83A6541 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080641AC + movs r4, 0 +_080641AC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080641BC: .4byte gUnknown_83A6541 + thumb_func_end sub_8064194 + + thumb_func_start sub_80641C0 +sub_80641C0: @ 80641C0 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080641E8 @ =gUnknown_83A6546 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080641D8 + movs r4, 0 +_080641D8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080641E8: .4byte gUnknown_83A6546 + thumb_func_end sub_80641C0 + + thumb_func_start sub_80641EC +sub_80641EC: @ 80641EC + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064214 @ =gUnknown_83A654B + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064204 + movs r4, 0 +_08064204: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064214: .4byte gUnknown_83A654B + thumb_func_end sub_80641EC + + thumb_func_start GetStepInPlaceDelay32AnimId +GetStepInPlaceDelay32AnimId: @ 8064218 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064240 @ =gUnknown_83A6550 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064230 + movs r4, 0 +_08064230: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064240: .4byte gUnknown_83A6550 + thumb_func_end GetStepInPlaceDelay32AnimId + + thumb_func_start GetStepInPlaceDelay16AnimId +GetStepInPlaceDelay16AnimId: @ 8064244 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0806426C @ =gUnknown_83A6555 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0806425C + movs r4, 0 +_0806425C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806426C: .4byte gUnknown_83A6555 + thumb_func_end GetStepInPlaceDelay16AnimId + + thumb_func_start sub_8064270 +sub_8064270: @ 8064270 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064298 @ =gUnknown_83A655A + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064288 + movs r4, 0 +_08064288: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064298: .4byte gUnknown_83A655A + thumb_func_end sub_8064270 + + thumb_func_start GetStepInPlaceDelay4AnimId +GetStepInPlaceDelay4AnimId: @ 806429C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080642C4 @ =gUnknown_83A655F + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080642B4 + movs r4, 0 +_080642B4: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080642C4: .4byte gUnknown_83A655F + thumb_func_end GetStepInPlaceDelay4AnimId + + thumb_func_start ObjectEventFaceOppositeDirection +ObjectEventFaceOppositeDirection: @ 80642C8 + push {r4,lr} + adds r4, r0, 0 + lsls r0, r1, 24 + lsrs r0, 24 + bl GetOppositeDirection + lsls r0, 24 + lsrs r0, 24 + bl sub_8063EB8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl ObjectEventSetHeldMovement + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end ObjectEventFaceOppositeDirection + + thumb_func_start sub_80642F4 +sub_80642F4: @ 80642F4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0806431C @ =gUnknown_83A6564 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0806430C + movs r4, 0 +_0806430C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806431C: .4byte gUnknown_83A6564 + thumb_func_end sub_80642F4 + + thumb_func_start sub_8064320 +sub_8064320: @ 8064320 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064348 @ =gUnknown_83A6569 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064338 + movs r4, 0 +_08064338: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064348: .4byte gUnknown_83A6569 + thumb_func_end sub_8064320 + + thumb_func_start sub_806434C +sub_806434C: @ 806434C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064374 @ =gUnknown_83A656E + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064364 + movs r4, 0 +_08064364: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064374: .4byte gUnknown_83A656E + thumb_func_end sub_806434C + + thumb_func_start sub_8064378 +sub_8064378: @ 8064378 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080643A0 @ =gUnknown_83A6573 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064390 + movs r4, 0 +_08064390: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080643A0: .4byte gUnknown_83A6573 + thumb_func_end sub_8064378 + + thumb_func_start sub_80643A4 +sub_80643A4: @ 80643A4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080643CC @ =gUnknown_83A6578 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080643BC + movs r4, 0 +_080643BC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080643CC: .4byte gUnknown_83A6578 + thumb_func_end sub_80643A4 + + thumb_func_start sub_80643D0 +sub_80643D0: @ 80643D0 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080643F8 @ =gUnknown_83A657D + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080643E8 + movs r4, 0 +_080643E8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080643F8: .4byte gUnknown_83A657D + thumb_func_end sub_80643D0 + + thumb_func_start sub_80643FC +sub_80643FC: @ 80643FC + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064424 @ =gUnknown_83A6582 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064414 + movs r4, 0 +_08064414: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064424: .4byte gUnknown_83A6582 + thumb_func_end sub_80643FC + + thumb_func_start sub_8064428 +sub_8064428: @ 8064428 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08064450 @ =gUnknown_83A6587 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08064440 + movs r4, 0 +_08064440: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064450: .4byte gUnknown_83A6587 + thumb_func_end sub_8064428 + + thumb_func_start sub_8064454 +sub_8064454: @ 8064454 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _0806447C @ =gUnknown_83A658C + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0806446C + movs r4, 0 +_0806446C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0806447C: .4byte gUnknown_83A658C + thumb_func_end sub_8064454 + + thumb_func_start GetOppositeDirection +GetOppositeDirection: @ 8064480 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _080644A4 @ =gUnknown_83A6591 + mov r0, sp + movs r2, 0x8 + bl memcpy + subs r1, r4, 0x1 + lsls r0, r1, 24 + lsrs r0, 24 + cmp r0, 0x7 + bhi _080644A8 + mov r2, sp + adds r0, r2, r1 + ldrb r0, [r0] + b _080644AA + .align 2, 0 +_080644A4: .4byte gUnknown_83A6591 +_080644A8: + adds r0, r4, 0 +_080644AA: + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetOppositeDirection + + thumb_func_start zffu_offset_calc +zffu_offset_calc: @ 80644B4 + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _080644C8 @ =gUnknown_83A6599 + lsrs r0, 22 + subs r0, 0x5 + adds r1, r0 + adds r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_080644C8: .4byte gUnknown_83A6599 + thumb_func_end zffu_offset_calc + + thumb_func_start state_to_direction +state_to_direction: @ 80644CC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + adds r0, r1, 0 + lsls r2, 24 + lsrs r2, 24 + cmp r1, 0 + beq _080644EC + cmp r2, 0 + beq _080644EC + cmp r1, 0x4 + bhi _080644EC + cmp r2, 0x4 + bls _080644F0 +_080644EC: + movs r0, 0 + b _08064502 +_080644F0: + adds r1, r2, 0 + bl zffu_offset_calc + ldr r2, _08064508 @ =gUnknown_83A65A9 + lsls r1, r4, 2 + subs r1, 0x5 + adds r0, r1 + adds r0, r2 + ldrb r0, [r0] +_08064502: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08064508: .4byte gUnknown_83A65A9 + thumb_func_end state_to_direction + + thumb_func_start ObjectEventExecSpecialAnim +ObjectEventExecSpecialAnim: @ 806450C + push {r4,lr} + adds r4, r0, 0 + ldr r2, _08064540 @ =gUnknown_83A65BC + ldrb r0, [r4, 0x1C] + lsls r0, 2 + adds r0, r2 + movs r3, 0x32 + ldrsh r2, [r1, r3] + ldr r0, [r0] + lsls r2, 2 + adds r2, r0 + ldr r2, [r2] + adds r0, r4, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + beq _08064538 + ldrb r0, [r4] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4] +_08064538: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08064540: .4byte gUnknown_83A65BC + thumb_func_end ObjectEventExecSpecialAnim + + thumb_func_start sub_8064544 +sub_8064544: @ 8064544 + push {r4,lr} + adds r4, r0, 0 + ldr r2, _08064584 @ =gUnknown_83A65BC + ldrb r0, [r4, 0x1C] + lsls r0, 2 + adds r0, r2 + movs r3, 0x32 + ldrsh r2, [r1, r3] + ldr r0, [r0] + lsls r2, 2 + adds r2, r0 + ldr r2, [r2] + adds r0, r4, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + beq _0806457C + ldrb r0, [r4] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r4, 0x5] + cmp r0, 0x61 + bne _0806457C + adds r0, r4, 0 + bl sub_806DE28 +_0806457C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08064584: .4byte gUnknown_83A65BC + thumb_func_end sub_8064544 + + thumb_func_start sub_8064588 +sub_8064588: @ 8064588 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _080645B4 @ =gUnknown_83A65BC + ldrb r0, [r4, 0x1C] + lsls r0, 2 + adds r0, r1 + movs r2, 0x32 + ldrsh r1, [r5, r2] + ldr r0, [r0] + lsls r1, 2 + adds r1, r0 + ldr r2, [r1] + adds r0, r4, 0 + adds r1, r5, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + bne _080645B8 + movs r0, 0 + b _080645C2 + .align 2, 0 +_080645B4: .4byte gUnknown_83A65BC +_080645B8: + movs r0, 0xFF + strb r0, [r4, 0x1C] + movs r0, 0 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080645C2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064588 + + thumb_func_start sub_80645C8 +sub_80645C8: @ 80645C8 + push {r4,lr} + adds r3, r0, 0 + lsls r2, 24 + lsrs r4, r2, 24 + movs r0, 0 + strb r4, [r3, 0x1C] + strh r0, [r1, 0x32] + ldr r0, _080645F0 @ =gUnknown_3005E88 + ldrb r0, [r0] + cmp r0, 0x2 + bne _080645EA + ldrb r0, [r3, 0x8] + ldrb r1, [r3, 0x9] + ldrb r2, [r3, 0xA] + adds r3, r4, 0 + bl sub_81124EC +_080645EA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080645F0: .4byte gUnknown_3005E88 + thumb_func_end sub_80645C8 + + thumb_func_start an_look_any +an_look_any: @ 80645F4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r1, r2, 24 + lsrs r1, 24 + bl ObjectEventSetDirection + adds r0, r4, 0 + bl npc_coords_shift_still + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl get_go_image_anim_num + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl obj_npc_animation_step + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 + strh r0, [r5, 0x32] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end an_look_any + + thumb_func_start sub_8064638 +sub_8064638: @ 8064638 + push {lr} + movs r2, 0x1 + bl an_look_any + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8064638 + + thumb_func_start sub_8064648 +sub_8064648: @ 8064648 + push {lr} + movs r2, 0x2 + bl an_look_any + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8064648 + + thumb_func_start sub_8064658 +sub_8064658: @ 8064658 + push {lr} + movs r2, 0x3 + bl an_look_any + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8064658 + + thumb_func_start sub_8064668 +sub_8064668: @ 8064668 + push {lr} + movs r2, 0x4 + bl an_look_any + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8064668 + + thumb_func_start sub_8064678 +sub_8064678: @ 8064678 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x4 + mov r8, r0 + mov r9, r1 + adds r4, r2, 0 + adds r6, r3, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + ldrh r1, [r0, 0x10] + mov r0, sp + strh r1, [r0] + mov r1, r8 + ldrh r0, [r1, 0x12] + mov r5, sp + adds r5, 0x2 + strh r0, [r5] + mov r0, r8 + adds r1, r4, 0 + bl ObjectEventSetDirection + adds r0, r4, 0 + mov r1, sp + adds r2, r5, 0 + bl MoveCoords + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r5, r0] + mov r0, r8 + bl npc_coords_shift + mov r0, r9 + adds r1, r4, 0 + adds r2, r6, 0 + bl oamt_npc_ministep_reset + mov r2, r9 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + mov r1, r8 + ldrb r0, [r1] + movs r1, 0x4 + orrs r0, r1 + mov r2, r8 + strb r0, [r2] + movs r0, 0x1 + mov r1, r9 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8064678 + + thumb_func_start do_go_anim +do_go_anim: @ 80646FC + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + adds r5, r0, 0 + mov r8, r1 + adds r4, r3, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r4, 24 + lsrs r4, 24 + mov r1, sp + ldr r0, _08064754 @ =gUnknown_83A6884 + ldm r0!, {r3,r6,r7} + stm r1!, {r3,r6,r7} + ldm r0!, {r3,r6} + stm r1!, {r3,r6} + adds r0, r5, 0 + mov r1, r8 + adds r3, r4, 0 + bl sub_8064678 + lsls r4, 2 + mov r7, sp + adds r1, r7, r4 + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + ldr r1, [r1] + bl _call_via_r1 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + mov r1, r8 + bl npc_apply_anim_looping + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08064754: .4byte gUnknown_83A6884 + thumb_func_end do_go_anim + + thumb_func_start do_run_anim +do_run_anim: @ 8064758 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + movs r3, 0x1 + bl sub_8064678 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl get_run_image_anim_num + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_apply_anim_looping + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end do_run_anim + + thumb_func_start npc_obj_ministep_stop_on_arrival +npc_obj_ministep_stop_on_arrival: @ 8064788 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl obj_npc_ministep + lsls r0, 24 + cmp r0, 0 + bne _0806479E + movs r0, 0 + b _080647BA +_0806479E: + adds r0, r4, 0 + bl npc_coords_shift_still + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_080647BA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end npc_obj_ministep_stop_on_arrival + + thumb_func_start sub_80647C0 +sub_80647C0: @ 80647C0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r6, r0, 0 + mov r8, r1 + lsls r5, r2, 24 + lsrs r5, 24 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r6, 0 + adds r1, r5, 0 + bl ObjectEventSetDirection + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl MoveCoords + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r4, r0] + adds r0, r6, 0 + bl npc_coords_shift + mov r0, r8 + adds r1, r5, 0 + bl sub_8068BBC + mov r2, r8 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x1 + mov r1, r8 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80647C0 + + thumb_func_start sub_8064830 +sub_8064830: @ 8064830 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + bl sub_80647C0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl get_go_image_anim_num + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_apply_anim_looping + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8064830 + + thumb_func_start an_walk_any_2 +an_walk_any_2: @ 806485C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068BCC + lsls r0, 24 + cmp r0, 0 + bne _08064872 + movs r0, 0 + b _0806488E +_08064872: + adds r0, r4, 0 + bl npc_coords_shift_still + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_0806488E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end an_walk_any_2 + + thumb_func_start sub_8064894 +sub_8064894: @ 8064894 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r6, r0, 0 + mov r8, r1 + lsls r5, r2, 24 + lsrs r5, 24 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r6, 0 + adds r1, r5, 0 + bl ObjectEventSetDirection + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl MoveCoords + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r4, r0] + adds r0, r6, 0 + bl npc_coords_shift + mov r0, r8 + adds r1, r5, 0 + bl sub_8068C58 + mov r2, r8 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x1 + mov r1, r8 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8064894 + + thumb_func_start sub_8064904 +sub_8064904: @ 8064904 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + bl sub_8064894 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl get_go_image_anim_num + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_apply_anim_looping + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8064904 + + thumb_func_start sub_8064930 +sub_8064930: @ 8064930 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068C68 + lsls r0, 24 + cmp r0, 0 + bne _08064946 + movs r0, 0 + b _08064962 +_08064946: + adds r0, r4, 0 + bl npc_coords_shift_still + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_08064962: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064930 + + thumb_func_start sub_8064968 +sub_8064968: @ 8064968 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8064904 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064988 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064968 + + thumb_func_start sub_8064988 +sub_8064988: @ 8064988 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064930 + lsls r0, 24 + cmp r0, 0 + bne _0806499A + movs r0, 0 + b _080649A0 +_0806499A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080649A0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064988 + + thumb_func_start sub_80649A8 +sub_80649A8: @ 80649A8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8064904 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80649C8 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80649A8 + + thumb_func_start sub_80649C8 +sub_80649C8: @ 80649C8 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064930 + lsls r0, 24 + cmp r0, 0 + bne _080649DA + movs r0, 0 + b _080649E0 +_080649DA: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080649E0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80649C8 + + thumb_func_start sub_80649E8 +sub_80649E8: @ 80649E8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8064904 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064A08 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80649E8 + + thumb_func_start sub_8064A08 +sub_8064A08: @ 8064A08 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064930 + lsls r0, 24 + cmp r0, 0 + bne _08064A1A + movs r0, 0 + b _08064A20 +_08064A1A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064A20: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064A08 + + thumb_func_start sub_8064A28 +sub_8064A28: @ 8064A28 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8064904 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064A48 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064A28 + + thumb_func_start sub_8064A48 +sub_8064A48: @ 8064A48 + push {r4,lr} + adds r4, r1, 0 + bl sub_8064930 + lsls r0, 24 + cmp r0, 0 + bne _08064A5A + movs r0, 0 + b _08064A60 +_08064A5A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064A60: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064A48 + + thumb_func_start sub_8064A68 +sub_8064A68: @ 8064A68 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8064830 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064A88 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064A68 + + thumb_func_start sub_8064A88 +sub_8064A88: @ 8064A88 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08064A9A + movs r0, 0 + b _08064AA0 +_08064A9A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064AA0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064A88 + + thumb_func_start sub_8064AA8 +sub_8064AA8: @ 8064AA8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8064830 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064AC8 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064AA8 + + thumb_func_start sub_8064AC8 +sub_8064AC8: @ 8064AC8 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08064ADA + movs r0, 0 + b _08064AE0 +_08064ADA: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064AE0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064AC8 + + thumb_func_start sub_8064AE8 +sub_8064AE8: @ 8064AE8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8064830 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064B08 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064AE8 + + thumb_func_start sub_8064B08 +sub_8064B08: @ 8064B08 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08064B1A + movs r0, 0 + b _08064B20 +_08064B1A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064B20: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064B08 + + thumb_func_start sub_8064B28 +sub_8064B28: @ 8064B28 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8064830 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064B48 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064B28 + + thumb_func_start sub_8064B48 +sub_8064B48: @ 8064B48 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08064B5A + movs r0, 0 + b _08064B60 +_08064B5A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064B60: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064B48 + + thumb_func_start sub_8064B68 +sub_8064B68: @ 8064B68 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r6, r0, 0 + mov r8, r1 + lsls r5, r2, 24 + lsrs r5, 24 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r6, 0 + adds r1, r5, 0 + bl ObjectEventSetDirection + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl MoveCoords + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r4, r0] + adds r0, r6, 0 + bl npc_coords_shift + mov r0, r8 + adds r1, r5, 0 + bl sub_8068C08 + mov r2, r8 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x1 + mov r1, r8 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8064B68 + + thumb_func_start sub_8064BD8 +sub_8064BD8: @ 8064BD8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + bl sub_8064B68 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl get_go_image_anim_num + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_apply_anim_looping + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8064BD8 + + thumb_func_start sub_8064C04 +sub_8064C04: @ 8064C04 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068C18 + lsls r0, 24 + cmp r0, 0 + bne _08064C1A + movs r0, 0 + b _08064C36 +_08064C1A: + adds r0, r4, 0 + bl npc_coords_shift_still + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_08064C36: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064C04 + + thumb_func_start sub_8064C3C +sub_8064C3C: @ 8064C3C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8064BD8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064C5C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064C3C + + thumb_func_start sub_8064C5C +sub_8064C5C: @ 8064C5C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064C04 + lsls r0, 24 + cmp r0, 0 + bne _08064C6E + movs r0, 0 + b _08064C74 +_08064C6E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064C74: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064C5C + + thumb_func_start sub_8064C7C +sub_8064C7C: @ 8064C7C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8064BD8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064C9C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064C7C + + thumb_func_start sub_8064C9C +sub_8064C9C: @ 8064C9C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064C04 + lsls r0, 24 + cmp r0, 0 + bne _08064CAE + movs r0, 0 + b _08064CB4 +_08064CAE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064CB4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064C9C + + thumb_func_start sub_8064CBC +sub_8064CBC: @ 8064CBC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8064BD8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064CDC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064CBC + + thumb_func_start sub_8064CDC +sub_8064CDC: @ 8064CDC + push {r4,lr} + adds r4, r1, 0 + bl sub_8064C04 + lsls r0, 24 + cmp r0, 0 + bne _08064CEE + movs r0, 0 + b _08064CF4 +_08064CEE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064CF4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064CDC + + thumb_func_start sub_8064CFC +sub_8064CFC: @ 8064CFC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8064BD8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064D1C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064CFC + + thumb_func_start sub_8064D1C +sub_8064D1C: @ 8064D1C + push {r4,lr} + adds r4, r1, 0 + bl sub_8064C04 + lsls r0, 24 + cmp r0, 0 + bne _08064D2E + movs r0, 0 + b _08064D34 +_08064D2E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064D34: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064D1C + + thumb_func_start sub_8064D3C +sub_8064D3C: @ 8064D3C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064D5C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064D3C + + thumb_func_start sub_8064D5C +sub_8064D5C: @ 8064D5C + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08064D6E + movs r0, 0 + b _08064D74 +_08064D6E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064D74: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064D5C + + thumb_func_start sub_8064D7C +sub_8064D7C: @ 8064D7C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064D9C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064D7C + + thumb_func_start sub_8064D9C +sub_8064D9C: @ 8064D9C + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08064DAE + movs r0, 0 + b _08064DB4 +_08064DAE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064DB4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064D9C + + thumb_func_start sub_8064DBC +sub_8064DBC: @ 8064DBC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064DDC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064DBC + + thumb_func_start sub_8064DDC +sub_8064DDC: @ 8064DDC + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08064DEE + movs r0, 0 + b _08064DF4 +_08064DEE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064DF4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064DDC + + thumb_func_start sub_8064DFC +sub_8064DFC: @ 8064DFC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064E1C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8064DFC + + thumb_func_start sub_8064E1C +sub_8064E1C: @ 8064E1C + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08064E2E + movs r0, 0 + b _08064E34 +_08064E2E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08064E34: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8064E1C + + thumb_func_start sub_8064E3C +sub_8064E3C: @ 8064E3C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + adds r7, r0, 0 + mov r10, r1 + adds r4, r2, 0 + mov r8, r3 + ldr r0, [sp, 0x30] + lsls r4, 24 + lsrs r4, 24 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + ldr r1, _08064EF4 @ =gUnknown_83A6958 + add r0, sp, 0x4 + movs r2, 0x6 + bl memcpy + add r5, sp, 0xC + movs r0, 0 + strh r0, [r5] + mov r6, sp + adds r6, 0xE + strh r0, [r6] + adds r0, r7, 0 + adds r1, r4, 0 + bl ObjectEventSetDirection + mov r1, r8 + lsls r0, r1, 1 + add r0, sp + adds r0, 0x4 + movs r1, 0 + ldrsh r3, [r0, r1] + str r3, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_8063A6C + ldrh r1, [r5] + ldrh r0, [r7, 0x10] + adds r1, r0 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r6] + ldrh r0, [r7, 0x12] + adds r2, r0 + lsls r2, 16 + asrs r2, 16 + adds r0, r7, 0 + bl npc_coords_shift + mov r0, r10 + adds r1, r4, 0 + mov r2, r8 + mov r3, r9 + bl sub_8068D1C + movs r0, 0x1 + mov r1, r10 + strh r0, [r1, 0x32] + movs r0, 0x2C + add r10, r0 + mov r0, r10 + ldrb r1, [r0] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + mov r1, r10 + strb r0, [r1] + ldrb r0, [r7] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r7] + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08064EF4: .4byte gUnknown_83A6958 + thumb_func_end sub_8064E3C + + thumb_func_start maybe_shadow_1 +maybe_shadow_1: @ 8064EF8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, [sp, 0x10] + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + adds r0, r4, 0 + bl sub_8064E3C + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl get_go_image_anim_num + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_apply_anim_looping + adds r0, r4, 0 + bl DoShadowFieldEffect + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end maybe_shadow_1 + + thumb_func_start sub_8064F3C +sub_8064F3C: @ 8064F3C + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x10 + adds r6, r0, 0 + adds r7, r1, 0 + adds r4, r2, 0 + ldr r1, _08064FC8 @ =gUnknown_83A695E + add r0, sp, 0x4 + movs r2, 0x6 + bl memcpy + adds r0, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x1 + bne _08064FCC + movs r1, 0x36 + ldrsh r0, [r7, r1] + lsls r0, 1 + add r0, sp + adds r0, 0x4 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + beq _08064FCC + add r4, sp, 0xC + movs r0, 0 + strh r0, [r4] + mov r5, sp + adds r5, 0xE + strh r0, [r5] + ldrb r0, [r6, 0x18] + lsrs r0, 4 + movs r2, 0x36 + ldrsh r1, [r7, r2] + lsls r1, 1 + add r1, sp + adds r1, 0x4 + movs r2, 0 + ldrsh r3, [r1, r2] + str r3, [sp] + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_8063A6C + ldrh r1, [r4] + ldrh r0, [r6, 0x10] + adds r1, r0 + lsls r1, 16 + asrs r1, 16 + ldrh r2, [r5] + ldrh r0, [r6, 0x12] + adds r2, r0 + lsls r2, 16 + asrs r2, 16 + adds r0, r6, 0 + bl npc_coords_shift + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r6] + b _08064FF0 + .align 2, 0 +_08064FC8: .4byte gUnknown_83A695E +_08064FCC: + mov r1, r8 + cmp r1, 0xFF + bne _08064FF0 + adds r0, r6, 0 + bl npc_coords_shift_still + ldrb r0, [r6] + movs r1, 0x8 + orrs r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r6] + adds r2, r7, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] +_08064FF0: + mov r0, r8 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8064F3C + + thumb_func_start sub_8065000 +sub_8065000: @ 8065000 + push {lr} + ldr r2, _08065010 @ =sub_8068D3C + bl sub_8064F3C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08065010: .4byte sub_8068D3C + thumb_func_end sub_8065000 + + thumb_func_start sub_8065014 +sub_8065014: @ 8065014 + push {lr} + ldr r2, _08065024 @ =sub_8068DC4 + bl sub_8064F3C + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08065024: .4byte sub_8068DC4 + thumb_func_end sub_8065014 + + thumb_func_start sub_8065028 +sub_8065028: @ 8065028 + push {lr} + bl sub_8065000 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _0806503A + movs r0, 0 + b _0806503C +_0806503A: + movs r0, 0x1 +_0806503C: + pop {r1} + bx r1 + thumb_func_end sub_8065028 + + thumb_func_start sub_8065040 +sub_8065040: @ 8065040 + push {lr} + bl sub_8065014 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _08065052 + movs r0, 0 + b _08065054 +_08065052: + movs r0, 0x1 +_08065054: + pop {r1} + bx r1 + thumb_func_end sub_8065040 + + thumb_func_start sub_8065058 +sub_8065058: @ 8065058 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065000 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08065072 + cmp r0, 0xFF + bne _0806509E + movs r0, 0x1 + b _080650A0 +_08065072: + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetOppositeDirection + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl ObjectEventSetDirection + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl get_go_image_anim_num + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl obj_npc_animation_step +_0806509E: + movs r0, 0 +_080650A0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065058 + + thumb_func_start sub_80650A8 +sub_80650A8: @ 80650A8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x2 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80650D4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80650A8 + + thumb_func_start sub_80650D4 +sub_80650D4: @ 80650D4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080650E8 + movs r0, 0 + b _080650F8 +_080650E8: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080650F8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80650D4 + + thumb_func_start sub_8065100 +sub_8065100: @ 8065100 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806512C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065100 + + thumb_func_start sub_806512C +sub_806512C: @ 806512C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08065140 + movs r0, 0 + b _08065150 +_08065140: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08065150: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806512C + + thumb_func_start sub_8065158 +sub_8065158: @ 8065158 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0x2 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065184 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065158 + + thumb_func_start sub_8065184 +sub_8065184: @ 8065184 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08065198 + movs r0, 0 + b _080651A8 +_08065198: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080651A8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065184 + + thumb_func_start sub_80651B0 +sub_80651B0: @ 80651B0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0x2 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80651DC + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80651B0 + + thumb_func_start sub_80651DC +sub_80651DC: @ 80651DC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080651F0 + movs r0, 0 + b _08065200 +_080651F0: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08065200: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80651DC + + thumb_func_start sub_8065208 +sub_8065208: @ 8065208 + movs r2, 0x1 + strh r2, [r0, 0x32] + strh r1, [r0, 0x34] + bx lr + thumb_func_end sub_8065208 + + thumb_func_start sub_8065210 +sub_8065210: @ 8065210 + push {lr} + ldrh r0, [r1, 0x34] + subs r0, 0x1 + strh r0, [r1, 0x34] + lsls r0, 16 + cmp r0, 0 + beq _08065222 + movs r0, 0 + b _08065228 +_08065222: + movs r0, 0x2 + strh r0, [r1, 0x32] + movs r0, 0x1 +_08065228: + pop {r1} + bx r1 + thumb_func_end sub_8065210 + + thumb_func_start sub_806522C +sub_806522C: @ 806522C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8065208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8065210 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806522C + + thumb_func_start sub_806524C +sub_806524C: @ 806524C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8065208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8065210 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806524C + + thumb_func_start sub_806526C +sub_806526C: @ 806526C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x4 + bl sub_8065208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8065210 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806526C + + thumb_func_start sub_806528C +sub_806528C: @ 806528C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x8 + bl sub_8065208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8065210 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806528C + + thumb_func_start sub_80652AC +sub_80652AC: @ 80652AC + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x10 + bl sub_8065208 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8065210 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80652AC + + thumb_func_start sub_80652CC +sub_80652CC: @ 80652CC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80652EC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80652CC + + thumb_func_start sub_80652EC +sub_80652EC: @ 80652EC + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080652FE + movs r0, 0 + b _08065304 +_080652FE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065304: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80652EC + + thumb_func_start sub_806530C +sub_806530C: @ 806530C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806532C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806530C + + thumb_func_start sub_806532C +sub_806532C: @ 806532C + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _0806533E + movs r0, 0 + b _08065344 +_0806533E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065344: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806532C + + thumb_func_start sub_806534C +sub_806534C: @ 806534C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806536C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806534C + + thumb_func_start sub_806536C +sub_806536C: @ 806536C + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _0806537E + movs r0, 0 + b _08065384 +_0806537E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065384: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806536C + + thumb_func_start sub_806538C +sub_806538C: @ 806538C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80653AC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806538C + + thumb_func_start sub_80653AC +sub_80653AC: @ 80653AC + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080653BE + movs r0, 0 + b _080653C4 +_080653BE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080653C4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80653AC + + thumb_func_start sub_80653CC +sub_80653CC: @ 80653CC + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + bl obj_npc_ministep + lsls r0, 24 + cmp r0, 0 + bne _080653E0 + movs r0, 0 + b _080653F0 +_080653E0: + adds r0, r4, 0 + bl npc_coords_shift_still + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + movs r0, 0x1 +_080653F0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80653CC + + thumb_func_start sub_80653F8 +sub_80653F8: @ 80653F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r1, [r4, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + beq _0806541A + movs r0, 0x1 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim +_0806541A: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8064678 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065438 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80653F8 + + thumb_func_start sub_8065438 +sub_8065438: @ 8065438 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl AnimateSprite + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80653CC + lsls r0, 24 + cmp r0, 0 + bne _08065456 + movs r0, 0 + b _0806545C +_08065456: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806545C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065438 + + thumb_func_start sub_8065464 +sub_8065464: @ 8065464 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r1, [r4, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x2 + beq _08065486 + movs r0, 0x2 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim +_08065486: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8064678 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80654A4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065464 + + thumb_func_start sub_80654A4 +sub_80654A4: @ 80654A4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl AnimateSprite + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80653CC + lsls r0, 24 + cmp r0, 0 + bne _080654C2 + movs r0, 0 + b _080654C8 +_080654C2: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080654C8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80654A4 + + thumb_func_start sub_80654D0 +sub_80654D0: @ 80654D0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r1, [r4, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x3 + beq _080654F2 + movs r0, 0x3 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim +_080654F2: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_8064678 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065510 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80654D0 + + thumb_func_start sub_8065510 +sub_8065510: @ 8065510 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl AnimateSprite + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80653CC + lsls r0, 24 + cmp r0, 0 + bne _0806552E + movs r0, 0 + b _08065534 +_0806552E: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08065534: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065510 + + thumb_func_start sub_806553C +sub_806553C: @ 806553C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r1, [r4, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x4 + beq _0806555E + movs r0, 0x4 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim +_0806555E: + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_8064678 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806557C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806553C + + thumb_func_start sub_806557C +sub_806557C: @ 806557C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl AnimateSprite + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80653CC + lsls r0, 24 + cmp r0, 0 + bne _0806559A + movs r0, 0 + b _080655A0 +_0806559A: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080655A0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806557C + + thumb_func_start sub_80655A8 +sub_80655A8: @ 80655A8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r1, r2, 24 + lsrs r1, 24 + bl ObjectEventSetDirection + adds r0, r4, 0 + bl npc_coords_shift_still + adds r2, r5, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r0, 0x1 + strh r0, [r5, 0x32] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80655A8 + + thumb_func_start sub_80655D4 +sub_80655D4: @ 80655D4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r5, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x1 + beq _080655F6 + movs r0, 0x1 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim +_080655F6: + adds r0, r4, 0 + bl AnimateSprite + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_80655A8 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80655D4 + + thumb_func_start sub_8065610 +sub_8065610: @ 8065610 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r5, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x2 + beq _08065632 + movs r0, 0x2 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim +_08065632: + adds r0, r4, 0 + bl AnimateSprite + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x2 + bl sub_80655A8 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065610 + + thumb_func_start sub_806564C +sub_806564C: @ 806564C + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r5, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x3 + beq _0806566E + movs r0, 0x3 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim +_0806566E: + adds r0, r4, 0 + bl AnimateSprite + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x3 + bl sub_80655A8 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806564C + + thumb_func_start sub_8065688 +sub_8065688: @ 8065688 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r5, 0x18] + movs r0, 0xF + ands r0, r1 + cmp r0, 0x4 + beq _080656AA + movs r0, 0x4 + bl ObjectEventDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim +_080656AA: + adds r0, r4, 0 + bl AnimateSprite + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x4 + bl sub_80655A8 + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065688 + + thumb_func_start sub_80656C4 +sub_80656C4: @ 80656C4 + push {r4-r6,lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r6, r1, 0 + adds r1, r2, 0 + adds r4, r3, 0 + ldr r5, [sp, 0x14] + lsls r1, 24 + lsrs r1, 24 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 16 + lsrs r5, 16 + bl ObjectEventSetDirection + mov r0, r8 + adds r1, r6, 0 + adds r2, r4, 0 + bl npc_apply_anim_looping + adds r2, r6, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r0, 0x1 + strh r0, [r6, 0x32] + strh r5, [r6, 0x34] + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80656C4 + + thumb_func_start sub_806570C +sub_806570C: @ 806570C + push {lr} + ldrh r0, [r1, 0x34] + subs r0, 0x1 + strh r0, [r1, 0x34] + lsls r0, 16 + cmp r0, 0 + beq _0806571E + movs r0, 0 + b _08065730 +_0806571E: + movs r0, 0x2 + strh r0, [r1, 0x32] + adds r2, r1, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_08065730: + pop {r1} + bx r1 + thumb_func_end sub_806570C + + thumb_func_start sub_8065734 +sub_8065734: @ 8065734 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrh r1, [r4, 0x34] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0806575E + adds r3, r4, 0 + adds r3, 0x2C + ldrb r2, [r3] + lsls r1, r2, 26 + lsrs r1, 26 + adds r1, 0x1 + movs r0, 0x3F + ands r1, r0 + movs r0, 0x40 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0806575E: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065734 + + thumb_func_start sub_8065770 +sub_8065770: @ 8065770 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl get_go_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x20 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065734 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065770 + + thumb_func_start sub_80657A8 +sub_80657A8: @ 80657A8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl get_go_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x20 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065734 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80657A8 + + thumb_func_start sub_80657E0 +sub_80657E0: @ 80657E0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl get_go_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x20 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065734 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80657E0 + + thumb_func_start sub_8065818 +sub_8065818: @ 8065818 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl get_go_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x20 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065734 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065818 + + thumb_func_start sub_8065850 +sub_8065850: @ 8065850 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl get_go_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x10 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065850 + + thumb_func_start sub_8065888 +sub_8065888: @ 8065888 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl get_go_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x10 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065888 + + thumb_func_start sub_80658C0 +sub_80658C0: @ 80658C0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl get_go_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x10 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80658C0 + + thumb_func_start sub_80658F8 +sub_80658F8: @ 80658F8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl get_go_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x10 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80658F8 + + thumb_func_start sub_8065930 +sub_8065930: @ 8065930 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl get_go_fast_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065930 + + thumb_func_start sub_8065968 +sub_8065968: @ 8065968 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl get_go_fast_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065968 + + thumb_func_start sub_80659A0 +sub_80659A0: @ 80659A0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl get_go_fast_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80659A0 + + thumb_func_start sub_80659D8 +sub_80659D8: @ 80659D8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl get_go_fast_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80659D8 + + thumb_func_start sub_8065A10 +sub_8065A10: @ 8065A10 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl get_go_faster_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x4 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065A10 + + thumb_func_start sub_8065A48 +sub_8065A48: @ 8065A48 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl get_go_faster_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x4 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065A48 + + thumb_func_start sub_8065A80 +sub_8065A80: @ 8065A80 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl get_go_faster_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x4 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065A80 + + thumb_func_start sub_8065AB8 +sub_8065AB8: @ 8065AB8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl get_go_faster_image_anim_num + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x4 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065AB8 + + thumb_func_start sub_8065AF0 +sub_8065AF0: @ 8065AF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x2 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065B10 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065AF0 + + thumb_func_start sub_8065B10 +sub_8065B10: @ 8065B10 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065B22 + movs r0, 0 + b _08065B28 +_08065B22: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065B28: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065B10 + + thumb_func_start sub_8065B30 +sub_8065B30: @ 8065B30 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x2 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065B50 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065B30 + + thumb_func_start sub_8065B50 +sub_8065B50: @ 8065B50 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065B62 + movs r0, 0 + b _08065B68 +_08065B62: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065B68: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065B50 + + thumb_func_start sub_8065B70 +sub_8065B70: @ 8065B70 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x2 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065B90 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065B70 + + thumb_func_start sub_8065B90 +sub_8065B90: @ 8065B90 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065BA2 + movs r0, 0 + b _08065BA8 +_08065BA2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065BA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065B90 + + thumb_func_start sub_8065BB0 +sub_8065BB0: @ 8065BB0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x2 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065BD0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065BB0 + + thumb_func_start sub_8065BD0 +sub_8065BD0: @ 8065BD0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065BE2 + movs r0, 0 + b _08065BE8 +_08065BE2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065BE8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065BD0 + + thumb_func_start sub_8065BF0 +sub_8065BF0: @ 8065BF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x3 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065C10 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065BF0 + + thumb_func_start sub_8065C10 +sub_8065C10: @ 8065C10 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065C22 + movs r0, 0 + b _08065C28 +_08065C22: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065C28: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065C10 + + thumb_func_start sub_8065C30 +sub_8065C30: @ 8065C30 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x3 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065C50 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065C30 + + thumb_func_start sub_8065C50 +sub_8065C50: @ 8065C50 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065C62 + movs r0, 0 + b _08065C68 +_08065C62: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065C68: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065C50 + + thumb_func_start sub_8065C70 +sub_8065C70: @ 8065C70 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x3 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065C90 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065C70 + + thumb_func_start sub_8065C90 +sub_8065C90: @ 8065C90 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065CA2 + movs r0, 0 + b _08065CA8 +_08065CA2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065CA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065C90 + + thumb_func_start sub_8065CB0 +sub_8065CB0: @ 8065CB0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x3 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065CD0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065CB0 + + thumb_func_start sub_8065CD0 +sub_8065CD0: @ 8065CD0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065CE2 + movs r0, 0 + b _08065CE8 +_08065CE2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065CE8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065CD0 + + thumb_func_start sub_8065CF0 +sub_8065CF0: @ 8065CF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x4 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065D10 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065CF0 + + thumb_func_start sub_8065D10 +sub_8065D10: @ 8065D10 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065D22 + movs r0, 0 + b _08065D28 +_08065D22: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065D28: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065D10 + + thumb_func_start sub_8065D30 +sub_8065D30: @ 8065D30 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x4 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065D50 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065D30 + + thumb_func_start sub_8065D50 +sub_8065D50: @ 8065D50 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065D62 + movs r0, 0 + b _08065D68 +_08065D62: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065D68: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065D50 + + thumb_func_start sub_8065D70 +sub_8065D70: @ 8065D70 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x4 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065D90 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065D70 + + thumb_func_start sub_8065D90 +sub_8065D90: @ 8065D90 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065DA2 + movs r0, 0 + b _08065DA8 +_08065DA2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065DA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065D90 + + thumb_func_start sub_8065DB0 +sub_8065DB0: @ 8065DB0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x4 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065DD0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065DB0 + + thumb_func_start sub_8065DD0 +sub_8065DD0: @ 8065DD0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065DE2 + movs r0, 0 + b _08065DE8 +_08065DE2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065DE8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065DD0 + + thumb_func_start do_run_south_anim +do_run_south_anim: @ 8065DF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl do_run_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065E10 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end do_run_south_anim + + thumb_func_start sub_8065E10 +sub_8065E10: @ 8065E10 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065E22 + movs r0, 0 + b _08065E28 +_08065E22: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065E28: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065E10 + + thumb_func_start do_run_north_anim +do_run_north_anim: @ 8065E30 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl do_run_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065E50 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end do_run_north_anim + + thumb_func_start sub_8065E50 +sub_8065E50: @ 8065E50 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065E62 + movs r0, 0 + b _08065E68 +_08065E62: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065E68: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065E50 + + thumb_func_start do_run_west_anim +do_run_west_anim: @ 8065E70 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl do_run_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065E90 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end do_run_west_anim + + thumb_func_start sub_8065E90 +sub_8065E90: @ 8065E90 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065EA2 + movs r0, 0 + b _08065EA8 +_08065EA2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065EA8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065E90 + + thumb_func_start do_run_east_anim +do_run_east_anim: @ 8065EB0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl do_run_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065ED0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end do_run_east_anim + + thumb_func_start sub_8065ED0 +sub_8065ED0: @ 8065ED0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08065EE2 + movs r0, 0 + b _08065EE8 +_08065EE2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065EE8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065ED0 + + thumb_func_start sub_8065EF0 +sub_8065EF0: @ 8065EF0 + push {r4-r6,lr} + mov r6, r8 + push {r6} + sub sp, 0x4 + adds r6, r0, 0 + mov r8, r1 + lsls r5, r2, 24 + lsrs r5, 24 + ldrh r1, [r6, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r6, 0x12] + mov r4, sp + adds r4, 0x2 + strh r0, [r4] + adds r0, r6, 0 + adds r1, r5, 0 + bl ObjectEventSetDirection + adds r0, r5, 0 + mov r1, sp + adds r2, r4, 0 + bl MoveCoords + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r4, r0] + adds r0, r6, 0 + bl npc_coords_shift + mov r0, r8 + adds r1, r5, 0 + bl sub_8068CA4 + mov r2, r8 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x1 + mov r1, r8 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8065EF0 + + thumb_func_start sub_8065F60 +sub_8065F60: @ 8065F60 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + bl sub_8065EF0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl get_run_image_anim_num + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_apply_anim_looping + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8065F60 + + thumb_func_start sub_8065F8C +sub_8065F8C: @ 8065F8C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8068CB4 + lsls r0, 24 + cmp r0, 0 + bne _08065FA2 + movs r0, 0 + b _08065FBE +_08065FA2: + adds r0, r4, 0 + bl npc_coords_shift_still + ldrb r0, [r4] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4] + adds r2, r5, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 +_08065FBE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065F8C + + thumb_func_start sub_8065FC4 +sub_8065FC4: @ 8065FC4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8065F60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8065FE4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8065FC4 + + thumb_func_start sub_8065FE4 +sub_8065FE4: @ 8065FE4 + push {r4,lr} + adds r4, r1, 0 + bl sub_8065F8C + lsls r0, 24 + cmp r0, 0 + bne _08065FF6 + movs r0, 0 + b _08065FFC +_08065FF6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08065FFC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8065FE4 + + thumb_func_start sub_8066004 +sub_8066004: @ 8066004 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8065F60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066024 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066004 + + thumb_func_start sub_8066024 +sub_8066024: @ 8066024 + push {r4,lr} + adds r4, r1, 0 + bl sub_8065F8C + lsls r0, 24 + cmp r0, 0 + bne _08066036 + movs r0, 0 + b _0806603C +_08066036: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0806603C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066024 + + thumb_func_start sub_8066044 +sub_8066044: @ 8066044 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8065F60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066064 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066044 + + thumb_func_start sub_8066064 +sub_8066064: @ 8066064 + push {r4,lr} + adds r4, r1, 0 + bl sub_8065F8C + lsls r0, 24 + cmp r0, 0 + bne _08066076 + movs r0, 0 + b _0806607C +_08066076: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0806607C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066064 + + thumb_func_start sub_8066084 +sub_8066084: @ 8066084 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8065F60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80660A4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066084 + + thumb_func_start sub_80660A4 +sub_80660A4: @ 80660A4 + push {r4,lr} + adds r4, r1, 0 + bl sub_8065F8C + lsls r0, 24 + cmp r0, 0 + bne _080660B6 + movs r0, 0 + b _080660BC +_080660B6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080660BC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80660A4 + + thumb_func_start npc_set_direction_and_anim__an_proceed +npc_set_direction_and_anim__an_proceed: @ 80660C4 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + adds r1, r3, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + movs r2, 0 + bl obj_anim_image_set_and_seek + adds r0, r6, 0 + adds r1, r4, 0 + bl ObjectEventSetDirection + movs r0, 0x1 + strh r0, [r5, 0x32] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end npc_set_direction_and_anim__an_proceed + + thumb_func_start sub_80660F0 +sub_80660F0: @ 80660F0 + push {lr} + ldrb r2, [r0, 0x18] + lsrs r2, 4 + adds r3, r1, 0 + adds r3, 0x2A + ldrb r3, [r3] + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_80660F0 + + thumb_func_start sub_8066108 +sub_8066108: @ 8066108 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8068E9C + lsls r0, 24 + cmp r0, 0 + bne _0806611C + movs r0, 0 + b _08066122 +_0806611C: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066122: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066108 + + thumb_func_start sub_8066128 +sub_8066128: @ 8066128 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r1, 0 + lsls r4, r2, 24 + lsrs r4, 24 + movs r1, 0 + str r1, [sp] + adds r1, r5, 0 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_8064E3C + adds r0, r4, 0 + bl sub_8063480 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8066128 + + thumb_func_start sub_806615C +sub_806615C: @ 806615C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806617C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806615C + + thumb_func_start sub_806617C +sub_806617C: @ 806617C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _08066190 + movs r0, 0 + b _0806619E +_08066190: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_0806619E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806617C + + thumb_func_start sub_80661A4 +sub_80661A4: @ 80661A4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80661C4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80661A4 + + thumb_func_start sub_80661C4 +sub_80661C4: @ 80661C4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _080661D8 + movs r0, 0 + b _080661E6 +_080661D8: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_080661E6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80661C4 + + thumb_func_start sub_80661EC +sub_80661EC: @ 80661EC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806620C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80661EC + + thumb_func_start sub_806620C +sub_806620C: @ 806620C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _08066220 + movs r0, 0 + b _0806622E +_08066220: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_0806622E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806620C + + thumb_func_start sub_8066234 +sub_8066234: @ 8066234 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066254 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066234 + + thumb_func_start sub_8066254 +sub_8066254: @ 8066254 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _08066268 + movs r0, 0 + b _08066276 +_08066268: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_08066276: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066254 + + thumb_func_start sub_806627C +sub_806627C: @ 806627C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806629C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806627C + + thumb_func_start sub_806629C +sub_806629C: @ 806629C + push {r4,lr} + adds r4, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _080662AE + movs r0, 0 + b _080662B4 +_080662AE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080662B4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806629C + + thumb_func_start sub_80662BC +sub_80662BC: @ 80662BC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80662DC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80662BC + + thumb_func_start sub_80662DC +sub_80662DC: @ 80662DC + push {r4,lr} + adds r4, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _080662EE + movs r0, 0 + b _080662F4 +_080662EE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080662F4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80662DC + + thumb_func_start sub_80662FC +sub_80662FC: @ 80662FC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806631C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80662FC + + thumb_func_start sub_806631C +sub_806631C: @ 806631C + push {r4,lr} + adds r4, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _0806632E + movs r0, 0 + b _08066334 +_0806632E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066334: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806631C + + thumb_func_start sub_806633C +sub_806633C: @ 806633C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8066128 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806635C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806633C + + thumb_func_start sub_806635C +sub_806635C: @ 806635C + push {r4,lr} + adds r4, r1, 0 + bl sub_8065040 + lsls r0, 24 + cmp r0, 0 + bne _0806636E + movs r0, 0 + b _08066374 +_0806636E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066374: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806635C + + thumb_func_start sub_806637C +sub_806637C: @ 806637C + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _080663C6 + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + ldr r4, _080663D4 @ =gObjectEvents + mov r2, sp + ldrb r2, [r2] + lsls r3, r2, 3 + adds r3, r2 + lsls r3, 2 + adds r3, r4 + movs r4, 0x10 + ldrsh r2, [r3, r4] + movs r4, 0x12 + ldrsh r3, [r3, r4] + bl sub_80635DC + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r6, 0 + bl an_look_any +_080663C6: + movs r0, 0x1 + strh r0, [r6, 0x32] + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_080663D4: .4byte gObjectEvents + thumb_func_end sub_806637C + + thumb_func_start sub_80663D8 +sub_80663D8: @ 80663D8 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + movs r0, 0xFF + movs r1, 0 + movs r2, 0 + mov r3, sp + bl TryGetObjectEventIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0806642A + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + ldr r4, _08066438 @ =gObjectEvents + mov r2, sp + ldrb r2, [r2] + lsls r3, r2, 3 + adds r3, r2 + lsls r3, 2 + adds r3, r4 + movs r4, 0x10 + ldrsh r2, [r3, r4] + movs r4, 0x12 + ldrsh r3, [r3, r4] + bl sub_80635DC + lsls r0, 24 + lsrs r0, 24 + bl GetOppositeDirection + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r6, 0 + bl an_look_any +_0806642A: + movs r0, 0x1 + strh r0, [r6, 0x32] + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08066438: .4byte gObjectEvents + thumb_func_end sub_80663D8 + + thumb_func_start sub_806643C +sub_806643C: @ 806643C + ldrb r2, [r0, 0x1] + movs r3, 0x2 + orrs r2, r3 + strb r2, [r0, 0x1] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_806643C + + thumb_func_start sub_806644C +sub_806644C: @ 806644C + ldrb r3, [r0, 0x1] + movs r2, 0x3 + negs r2, r2 + ands r2, r3 + strb r2, [r0, 0x1] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_806644C + + thumb_func_start sub_806645C +sub_806645C: @ 806645C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x1 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066488 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806645C + + thumb_func_start sub_8066488 +sub_8066488: @ 8066488 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _0806649C + movs r0, 0 + b _080664AC +_0806649C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080664AC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066488 + + thumb_func_start sub_80664B4 +sub_80664B4: @ 80664B4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x1 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80664E0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80664B4 + + thumb_func_start sub_80664E0 +sub_80664E0: @ 80664E0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080664F4 + movs r0, 0 + b _08066504 +_080664F4: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066504: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80664E0 + + thumb_func_start sub_806650C +sub_806650C: @ 806650C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0x1 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066538 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806650C + + thumb_func_start sub_8066538 +sub_8066538: @ 8066538 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _0806654C + movs r0, 0 + b _0806655C +_0806654C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806655C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066538 + + thumb_func_start sub_8066564 +sub_8066564: @ 8066564 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0x1 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066590 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066564 + + thumb_func_start sub_8066590 +sub_8066590: @ 8066590 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080665A4 + movs r0, 0 + b _080665B4 +_080665A4: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080665B4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066590 + + thumb_func_start sub_80665BC +sub_80665BC: @ 80665BC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80665E8 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80665BC + + thumb_func_start sub_80665E8 +sub_80665E8: @ 80665E8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080665FC + movs r0, 0 + b _0806660C +_080665FC: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806660C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80665E8 + + thumb_func_start sub_8066614 +sub_8066614: @ 8066614 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066640 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066614 + + thumb_func_start sub_8066640 +sub_8066640: @ 8066640 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08066654 + movs r0, 0 + b _08066664 +_08066654: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066664: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066640 + + thumb_func_start sub_806666C +sub_806666C: @ 806666C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066698 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806666C + + thumb_func_start sub_8066698 +sub_8066698: @ 8066698 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080666AC + movs r0, 0 + b _080666BC +_080666AC: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080666BC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066698 + + thumb_func_start sub_80666C4 +sub_80666C4: @ 80666C4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80666F0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80666C4 + + thumb_func_start sub_80666F0 +sub_80666F0: @ 80666F0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08066704 + movs r0, 0 + b _08066714 +_08066704: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066714: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80666F0 + + thumb_func_start sub_806671C +sub_806671C: @ 806671C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066748 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806671C + + thumb_func_start sub_8066748 +sub_8066748: @ 8066748 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065058 + lsls r0, 24 + cmp r0, 0 + bne _0806675C + movs r0, 0 + b _0806676C +_0806675C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806676C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066748 + + thumb_func_start sub_8066774 +sub_8066774: @ 8066774 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80667A0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066774 + + thumb_func_start sub_80667A0 +sub_80667A0: @ 80667A0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065058 + lsls r0, 24 + cmp r0, 0 + bne _080667B4 + movs r0, 0 + b _080667C4 +_080667B4: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080667C4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80667A0 + + thumb_func_start sub_80667CC +sub_80667CC: @ 80667CC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80667F8 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80667CC + + thumb_func_start sub_80667F8 +sub_80667F8: @ 80667F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065058 + lsls r0, 24 + cmp r0, 0 + bne _0806680C + movs r0, 0 + b _0806681C +_0806680C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806681C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80667F8 + + thumb_func_start sub_8066824 +sub_8066824: @ 8066824 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0 + bl maybe_shadow_1 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066850 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066824 + + thumb_func_start sub_8066850 +sub_8066850: @ 8066850 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065058 + lsls r0, 24 + cmp r0, 0 + bne _08066864 + movs r0, 0 + b _08066874 +_08066864: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066874: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066850 + + thumb_func_start sub_806687C +sub_806687C: @ 806687C + push {lr} + ldr r3, _08066890 @ =gUnknown_839FD5D + ldrb r2, [r0, 0x6] + adds r2, r3 + ldrb r2, [r2] + bl an_look_any + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_08066890: .4byte gUnknown_839FD5D + thumb_func_end sub_806687C + + thumb_func_start sub_8066894 +sub_8066894: @ 8066894 + push {lr} + movs r2, 0x1 + movs r3, 0x14 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8066894 + + thumb_func_start sub_80668A4 +sub_80668A4: @ 80668A4 + ldrb r3, [r0, 0x3] + movs r2, 0x3 + negs r2, r2 + ands r2, r3 + strb r2, [r0, 0x3] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_80668A4 + + thumb_func_start sub_80668B4 +sub_80668B4: @ 80668B4 + ldrb r2, [r0, 0x3] + movs r3, 0x2 + orrs r2, r3 + strb r2, [r0, 0x3] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_80668B4 + + thumb_func_start sub_80668C4 +sub_80668C4: @ 80668C4 + ldrb r2, [r0, 0x1] + movs r3, 0x10 + orrs r2, r3 + strb r2, [r0, 0x1] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_80668C4 + + thumb_func_start sub_80668D4 +sub_80668D4: @ 80668D4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x5] + bl GetObjectEventGraphicsInfo + ldrb r1, [r0, 0xC] + lsls r1, 25 + lsrs r1, 31 + lsls r1, 4 + ldrb r2, [r4, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x1 + strh r0, [r5, 0x32] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80668D4 + + thumb_func_start sub_8066900 +sub_8066900: @ 8066900 + ldrb r2, [r0, 0x1] + movs r3, 0x20 + orrs r2, r3 + strb r2, [r0, 0x1] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_8066900 + + thumb_func_start sub_8066910 +sub_8066910: @ 8066910 + ldrb r3, [r0, 0x1] + movs r2, 0x21 + negs r2, r2 + ands r2, r3 + strb r2, [r0, 0x1] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_8066910 + + thumb_func_start do_exclamation_mark_bubble_1 +do_exclamation_mark_bubble_1: @ 8066920 + push {r4,lr} + adds r4, r1, 0 + ldr r1, _08066940 @ =gFieldEffectArguments + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl ObjectEventGetLocalIdAndMap + movs r0, 0 + bl FieldEffectStart + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08066940: .4byte gFieldEffectArguments + thumb_func_end do_exclamation_mark_bubble_1 + + thumb_func_start do_exclamation_mark_bubble_2 +do_exclamation_mark_bubble_2: @ 8066944 + push {r4,lr} + adds r4, r1, 0 + ldr r1, _08066964 @ =gFieldEffectArguments + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl ObjectEventGetLocalIdAndMap + movs r0, 0x21 + bl FieldEffectStart + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08066964: .4byte gFieldEffectArguments + thumb_func_end do_exclamation_mark_bubble_2 + + thumb_func_start do_heart_bubble +do_heart_bubble: @ 8066968 + push {r4,lr} + adds r4, r1, 0 + ldr r1, _08066988 @ =gFieldEffectArguments + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl ObjectEventGetLocalIdAndMap + movs r0, 0x2E + bl FieldEffectStart + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08066988: .4byte gFieldEffectArguments + thumb_func_end do_heart_bubble + + thumb_func_start sub_806698C +sub_806698C: @ 806698C + push {r4,lr} + adds r4, r1, 0 + ldr r1, _080669AC @ =gFieldEffectArguments + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl ObjectEventGetLocalIdAndMap + movs r0, 0x42 + bl FieldEffectStart + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080669AC: .4byte gFieldEffectArguments + thumb_func_end sub_806698C + + thumb_func_start sub_80669B0 +sub_80669B0: @ 80669B0 + push {r4,lr} + adds r4, r1, 0 + ldr r1, _080669D0 @ =gFieldEffectArguments + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl ObjectEventGetLocalIdAndMap + movs r0, 0x40 + bl FieldEffectStart + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080669D0: .4byte gFieldEffectArguments + thumb_func_end sub_80669B0 + + thumb_func_start sub_80669D4 +sub_80669D4: @ 80669D4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x6] + cmp r0, 0x3F + bne _080669EA + adds r0, r4, 0 + bl sub_80824EC + movs r0, 0 + b _08066A12 +_080669EA: + subs r0, 0x39 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08066A0C + adds r0, r4, 0 + bl sub_80DCBB8 + movs r0, 0x1 + strh r0, [r5, 0x32] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066A18 + lsls r0, 24 + lsrs r0, 24 + b _08066A12 +_08066A0C: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066A12: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80669D4 + + thumb_func_start sub_8066A18 +sub_8066A18: @ 8066A18 + push {r4,lr} + adds r4, r1, 0 + bl sub_80DCBE0 + lsls r0, 24 + cmp r0, 0 + bne _08066A2A + movs r0, 0 + b _08066A30 +_08066A2A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066A30: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066A18 + + thumb_func_start sub_8066A38 +sub_8066A38: @ 8066A38 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl obj_anim_image_set_and_seek + movs r0, 0x1 + strh r0, [r4, 0x32] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066A38 + + thumb_func_start sub_8066A54 +sub_8066A54: @ 8066A54 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8068E9C + lsls r0, 24 + cmp r0, 0 + beq _08066A70 + adds r0, r4, 0 + movs r1, 0x20 + bl SetObjectEventStepTimer + movs r0, 0x2 + strh r0, [r4, 0x32] +_08066A70: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066A54 + + thumb_func_start sub_8066A78 +sub_8066A78: @ 8066A78 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r2, [r4, 0x1] + lsls r1, r2, 26 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + lsls r1, 5 + subs r0, 0x22 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + beq _08066AAA + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x3 + strh r0, [r5, 0x32] +_08066AAA: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066A78 + + thumb_func_start sub_8066AB4 +sub_8066AB4: @ 8066AB4 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0 + bl obj_anim_image_set_and_seek + movs r0, 0x1 + strh r0, [r4, 0x32] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066AB4 + + thumb_func_start sub_8066AD0 +sub_8066AD0: @ 8066AD0 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8068E9C + lsls r0, 24 + cmp r0, 0 + beq _08066AEC + adds r0, r4, 0 + movs r1, 0x20 + bl SetObjectEventStepTimer + movs r0, 0x2 + strh r0, [r4, 0x32] +_08066AEC: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066AD0 + + thumb_func_start sub_8066AF4 +sub_8066AF4: @ 8066AF4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r2, [r4, 0x1] + lsls r1, r2, 26 + lsrs r1, 31 + movs r0, 0x1 + eors r1, r0 + lsls r1, 5 + subs r0, 0x22 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r0, r5, 0 + bl RunObjectEventStepTimer + lsls r0, 24 + cmp r0, 0 + beq _08066B26 + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x3 + strh r0, [r5, 0x32] +_08066B26: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066AF4 + + thumb_func_start sub_8066B30 +sub_8066B30: @ 8066B30 + ldrb r2, [r0, 0x3] + movs r3, 0x4 + orrs r2, r3 + strb r2, [r0, 0x3] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_8066B30 + + thumb_func_start sub_8066B40 +sub_8066B40: @ 8066B40 + ldrb r3, [r0, 0x3] + movs r2, 0x5 + negs r2, r2 + ands r2, r3 + strb r2, [r0, 0x3] + movs r0, 0x1 + strh r0, [r1, 0x32] + bx lr + thumb_func_end sub_8066B40 + + thumb_func_start sub_8066B50 +sub_8066B50: @ 8066B50 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r0, r4, 0 + bl InitSpriteAffineAnim + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + adds r4, 0x42 + ldrb r1, [r4] + movs r0, 0x3F + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066B50 + + thumb_func_start sub_8066B80 +sub_8066B80: @ 8066B80 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl FreeOamMatrix + ldrb r0, [r4, 0x1] + movs r1, 0x4 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x1] + lsrs r1, 6 + ldrb r2, [r4, 0x3] + lsrs r2, 6 + movs r3, 0 + adds r0, r4, 0 + bl CalcCenterToCornerVec + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066B80 + + thumb_func_start sub_8066BB0 +sub_8066BB0: @ 8066BB0 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8064830 + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0 + bl StartSpriteAffineAnimIfDifferent + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8066BE4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066BB0 + + thumb_func_start sub_8066BE4 +sub_8066BE4: @ 8066BE4 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08066BF6 + movs r0, 0 + b _08066C08 +_08066BF6: + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066C08: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066BE4 + + thumb_func_start sub_8066C10 +sub_8066C10: @ 8066C10 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8064830 + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + adds r0, r4, 0 + movs r1, 0x1 + bl ChangeSpriteAffineAnimIfDifferent + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8066C44 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066C10 + + thumb_func_start sub_8066C44 +sub_8066C44: @ 8066C44 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08066C56 + movs r0, 0 + b _08066C68 +_08066C56: + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08066C68: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8066C44 + + thumb_func_start sub_8066C70 +sub_8066C70: @ 8066C70 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + lsls r4, r2, 24 + lsrs r4, 24 + adds r1, r4, 0 + bl ObjectEventSetDirection + adds r0, r5, 0 + bl npc_coords_shift_still + adds r0, r4, 0 + bl sub_80634E0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r6, 0 + bl obj_npc_animation_step + adds r2, r6, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 + strh r0, [r6, 0x32] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8066C70 + + thumb_func_start sub_8066CB0 +sub_8066CB0: @ 8066CB0 + push {lr} + movs r2, 0x1 + bl sub_8066C70 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8066CB0 + + thumb_func_start sub_8066CC0 +sub_8066CC0: @ 8066CC0 + push {lr} + movs r2, 0x2 + bl sub_8066C70 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8066CC0 + + thumb_func_start sub_8066CD0 +sub_8066CD0: @ 8066CD0 + push {lr} + movs r2, 0x3 + bl sub_8066C70 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8066CD0 + + thumb_func_start sub_8066CE0 +sub_8066CE0: @ 8066CE0 + push {lr} + movs r2, 0x4 + bl sub_8066C70 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8066CE0 + + thumb_func_start sub_8066CF0 +sub_8066CF0: @ 8066CF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_8063490 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066CF0 + + thumb_func_start sub_8066D14 +sub_8066D14: @ 8066D14 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_8063490 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066D14 + + thumb_func_start sub_8066D38 +sub_8066D38: @ 8066D38 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_8063490 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066D38 + + thumb_func_start sub_8066D5C +sub_8066D5C: @ 8066D5C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_8063490 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066D5C + + thumb_func_start sub_8066D80 +sub_8066D80: @ 8066D80 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_80634B0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066D80 + + thumb_func_start sub_8066DA4 +sub_8066DA4: @ 8066DA4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_80634B0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066DA4 + + thumb_func_start sub_8066DC8 +sub_8066DC8: @ 8066DC8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_80634B0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066DC8 + + thumb_func_start sub_8066DEC +sub_8066DEC: @ 8066DEC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_80634B0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066DEC + + thumb_func_start sub_8066E10 +sub_8066E10: @ 8066E10 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_80634D0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066E10 + + thumb_func_start sub_8066E34 +sub_8066E34: @ 8066E34 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_80634D0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066E34 + + thumb_func_start sub_8066E58 +sub_8066E58: @ 8066E58 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_80634D0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066E58 + + thumb_func_start sub_8066E7C +sub_8066E7C: @ 8066E7C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_80634D0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl npc_set_direction_and_anim__an_proceed + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066E7C + + thumb_func_start sub_8066EA0 +sub_8066EA0: @ 8066EA0 + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + ldr r0, [sp, 0x14] + lsls r4, 24 + lsrs r4, 24 + lsls r3, 24 + lsrs r3, 24 + lsls r0, 24 + lsrs r0, 24 + str r0, [sp] + adds r0, r6, 0 + adds r2, r4, 0 + bl sub_8064E3C + adds r0, r4, 0 + bl sub_8063490 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnimIfDifferent + adds r0, r6, 0 + bl DoShadowFieldEffect + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8066EA0 + + thumb_func_start sub_8066EE4 +sub_8066EE4: @ 8066EE4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066F10 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066EE4 + + thumb_func_start sub_8066F10 +sub_8066F10: @ 8066F10 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08066F24 + movs r0, 0 + b _08066F34 +_08066F24: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066F34: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066F10 + + thumb_func_start sub_8066F3C +sub_8066F3C: @ 8066F3C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066F68 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066F3C + + thumb_func_start sub_8066F68 +sub_8066F68: @ 8066F68 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08066F7C + movs r0, 0 + b _08066F8C +_08066F7C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066F8C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066F68 + + thumb_func_start sub_8066F94 +sub_8066F94: @ 8066F94 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8066FC0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066F94 + + thumb_func_start sub_8066FC0 +sub_8066FC0: @ 8066FC0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08066FD4 + movs r0, 0 + b _08066FE4 +_08066FD4: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08066FE4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066FC0 + + thumb_func_start sub_8066FEC +sub_8066FEC: @ 8066FEC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067018 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8066FEC + + thumb_func_start sub_8067018 +sub_8067018: @ 8067018 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _0806702C + movs r0, 0 + b _0806703C +_0806702C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806703C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067018 + + thumb_func_start sub_8067044 +sub_8067044: @ 8067044 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067070 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067044 + + thumb_func_start sub_8067070 +sub_8067070: @ 8067070 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08067084 + movs r0, 0 + b _08067094 +_08067084: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08067094: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067070 + + thumb_func_start sub_806709C +sub_806709C: @ 806709C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80670C8 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806709C + + thumb_func_start sub_80670C8 +sub_80670C8: @ 80670C8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080670DC + movs r0, 0 + b _080670EC +_080670DC: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080670EC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80670C8 + + thumb_func_start sub_80670F4 +sub_80670F4: @ 80670F4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067120 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80670F4 + + thumb_func_start sub_8067120 +sub_8067120: @ 8067120 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08067134 + movs r0, 0 + b _08067144 +_08067134: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08067144: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067120 + + thumb_func_start sub_806714C +sub_806714C: @ 806714C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067178 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806714C + + thumb_func_start sub_8067178 +sub_8067178: @ 8067178 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _0806718C + movs r0, 0 + b _0806719C +_0806718C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806719C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067178 + + thumb_func_start sub_80671A4 +sub_80671A4: @ 80671A4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x1 + movs r3, 0x2 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80671D0 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80671A4 + + thumb_func_start sub_80671D0 +sub_80671D0: @ 80671D0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080671E4 + movs r0, 0 + b _080671F4 +_080671E4: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080671F4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80671D0 + + thumb_func_start sub_80671FC +sub_80671FC: @ 80671FC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x2 + movs r3, 0x2 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067228 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80671FC + + thumb_func_start sub_8067228 +sub_8067228: @ 8067228 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _0806723C + movs r0, 0 + b _0806724C +_0806723C: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_0806724C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067228 + + thumb_func_start sub_8067254 +sub_8067254: @ 8067254 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x3 + movs r3, 0x2 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067280 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067254 + + thumb_func_start sub_8067280 +sub_8067280: @ 8067280 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _08067294 + movs r0, 0 + b _080672A4 +_08067294: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080672A4: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067280 + + thumb_func_start sub_80672AC +sub_80672AC: @ 80672AC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + movs r2, 0x4 + movs r3, 0x2 + bl sub_8066EA0 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80672D8 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80672AC + + thumb_func_start sub_80672D8 +sub_80672D8: @ 80672D8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8065028 + lsls r0, 24 + cmp r0, 0 + bne _080672EC + movs r0, 0 + b _080672FC +_080672EC: + ldrb r0, [r4, 0x2] + movs r1, 0x41 + negs r1, r1 + ands r1, r0 + strb r1, [r4, 0x2] + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080672FC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80672D8 + + thumb_func_start sub_8067304 +sub_8067304: @ 8067304 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_80634E0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067304 + + thumb_func_start sub_806733C +sub_806733C: @ 806733C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_80634E0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x2 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806733C + + thumb_func_start sub_8067374 +sub_8067374: @ 8067374 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_80634E0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x3 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067374 + + thumb_func_start sub_80673AC +sub_80673AC: @ 80673AC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_80634E0 + adds r3, r0, 0 + lsls r3, 24 + lsrs r3, 24 + movs r0, 0x8 + str r0, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x4 + bl sub_80656C4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806570C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80673AC + + thumb_func_start sub_80673E4 +sub_80673E4: @ 80673E4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + bl sub_8064678 + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8063490 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + adds r0, r4, 0 + movs r1, 0 + bl SeekSpriteAnim + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80673E4 + + thumb_func_start sub_806741C +sub_806741C: @ 806741C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_80673E4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806743C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806741C + + thumb_func_start sub_806743C +sub_806743C: @ 806743C + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _0806744E + movs r0, 0 + b _08067454 +_0806744E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067454: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806743C + + thumb_func_start sub_806745C +sub_806745C: @ 806745C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_80673E4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806747C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806745C + + thumb_func_start sub_806747C +sub_806747C: @ 806747C + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _0806748E + movs r0, 0 + b _08067494 +_0806748E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067494: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806747C + + thumb_func_start sub_806749C +sub_806749C: @ 806749C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_80673E4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80674BC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806749C + + thumb_func_start sub_80674BC +sub_80674BC: @ 80674BC + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080674CE + movs r0, 0 + b _080674D4 +_080674CE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080674D4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80674BC + + thumb_func_start sub_80674DC +sub_80674DC: @ 80674DC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_80673E4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80674FC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80674DC + + thumb_func_start sub_80674FC +sub_80674FC: @ 80674FC + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _0806750E + movs r0, 0 + b _08067514 +_0806750E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067514: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80674FC + + thumb_func_start sub_806751C +sub_806751C: @ 806751C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + bl sub_8064678 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_80634E0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_apply_anim_looping + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_806751C + + thumb_func_start sub_806754C +sub_806754C: @ 806754C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_806751C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806756C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806754C + + thumb_func_start sub_806756C +sub_806756C: @ 806756C + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _0806757E + movs r0, 0 + b _08067584 +_0806757E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067584: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806756C + + thumb_func_start sub_806758C +sub_806758C: @ 806758C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_806751C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80675AC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806758C + + thumb_func_start sub_80675AC +sub_80675AC: @ 80675AC + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080675BE + movs r0, 0 + b _080675C4 +_080675BE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080675C4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80675AC + + thumb_func_start sub_80675CC +sub_80675CC: @ 80675CC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_806751C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80675EC + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80675CC + + thumb_func_start sub_80675EC +sub_80675EC: @ 80675EC + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080675FE + movs r0, 0 + b _08067604 +_080675FE: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067604: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80675EC + + thumb_func_start sub_806760C +sub_806760C: @ 806760C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_806751C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_806762C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_806760C + + thumb_func_start sub_806762C +sub_806762C: @ 806762C + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _0806763E + movs r0, 0 + b _08067644 +_0806763E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08067644: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_806762C + + thumb_func_start sub_806764C +sub_806764C: @ 806764C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 24 + lsrs r3, 24 + bl sub_8064678 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_80634C0 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_apply_anim_looping + adds r0, r5, 0 + movs r1, 0 + bl SeekSpriteAnim + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_806764C + + thumb_func_start sub_8067684 +sub_8067684: @ 8067684 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_806764C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80676A4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067684 + + thumb_func_start sub_80676A4 +sub_80676A4: @ 80676A4 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080676B6 + movs r0, 0 + b _080676BC +_080676B6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080676BC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80676A4 + + thumb_func_start sub_80676C4 +sub_80676C4: @ 80676C4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_806764C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80676E4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80676C4 + + thumb_func_start sub_80676E4 +sub_80676E4: @ 80676E4 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080676F6 + movs r0, 0 + b _080676FC +_080676F6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080676FC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80676E4 + + thumb_func_start sub_8067704 +sub_8067704: @ 8067704 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_806764C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067724 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067704 + + thumb_func_start sub_8067724 +sub_8067724: @ 8067724 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08067736 + movs r0, 0 + b _0806773C +_08067736: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0806773C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8067724 + + thumb_func_start sub_8067744 +sub_8067744: @ 8067744 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_806764C + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8067764 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067744 + + thumb_func_start sub_8067764 +sub_8067764: @ 8067764 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08067776 + movs r0, 0 + b _0806777C +_08067776: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0806777C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8067764 + + thumb_func_start sub_8067784 +sub_8067784: @ 8067784 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x14 + bl StartSpriteAnim + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r5, 0x1] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + movs r1, 0 + movs r0, 0x1 + strh r0, [r4, 0x32] + strh r1, [r4, 0x36] + strh r1, [r4, 0x38] + strh r1, [r4, 0x3A] + strh r1, [r4, 0x3C] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8067784 + + thumb_func_start sub_80677C0 +sub_80677C0: @ 80677C0 + adds r1, 0x3F + ldrb r0, [r1] + lsls r0, 27 + lsrs r0, 31 + bx lr + thumb_func_end sub_80677C0 + + thumb_func_start sub_80677CC +sub_80677CC: @ 80677CC + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r0, 0x3C + ldrsh r1, [r4, r0] + cmp r1, 0x1 + beq _08067854 + cmp r1, 0x1 + bgt _080677E4 + cmp r1, 0 + beq _080677EA + b _080678B6 +_080677E4: + cmp r1, 0x2 + beq _08067896 + b _080678B6 +_080677EA: + ldrh r0, [r4, 0x3A] + adds r0, 0xA + strh r0, [r4, 0x3A] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x7F + ble _08067822 + strh r1, [r4, 0x3A] + ldrh r0, [r4, 0x38] + adds r0, 0x1 + strh r0, [r4, 0x38] + strh r0, [r4, 0x3C] + adds r0, r4, 0 + movs r1, 0 + bl StartSpriteAnim + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r5, 0x1] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] +_08067822: + ldr r1, _08067850 @ =gSineTable + movs r2, 0x3A + ldrsh r0, [r4, r2] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + lsls r0, r1, 1 + adds r0, r1 + asrs r0, 7 + negs r0, r0 + strh r0, [r4, 0x26] + negs r1, r0 + orrs r1, r0 + lsrs r1, 31 + lsls r1, 1 + ldrb r2, [r5] + movs r0, 0x3 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + b _080678B6 + .align 2, 0 +_08067850: .4byte gSineTable +_08067854: + ldrh r0, [r4, 0x36] + adds r0, 0x1 + movs r6, 0 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x10 + ble _0806788A + strh r6, [r4, 0x36] + adds r0, r4, 0 + movs r1, 0x14 + bl StartSpriteAnim + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r5, 0x1] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + strh r6, [r4, 0x3C] + b _080678B6 +_0806788A: + ldrb r1, [r5] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r5] + b _080678B6 +_08067896: + ldrb r1, [r5] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r5] + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x50 + ble _080678B6 + movs r0, 0 + strh r0, [r4, 0x36] + movs r0, 0x1 + b _080678B8 +_080678B6: + movs r0, 0 +_080678B8: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80677CC + + thumb_func_start sub_80678C0 +sub_80678C0: @ 80678C0 + push {r4,lr} + ldrh r2, [r1, 0x3C] + adds r2, 0x4 + movs r0, 0xFF + ands r2, r0 + strh r2, [r1, 0x3C] + ldr r3, _080678EC @ =gSineTable + movs r4, 0x3C + ldrsh r0, [r1, r4] + lsls r0, 1 + adds r0, r3 + ldrh r0, [r0] + lsls r0, 16 + asrs r0, 23 + strh r0, [r1, 0x24] + movs r0, 0 + cmp r2, 0 + bne _080678E6 + movs r0, 0x1 +_080678E6: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080678EC: .4byte gSineTable + thumb_func_end sub_80678C0 + + thumb_func_start sub_80678F0 +sub_80678F0: @ 80678F0 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x1C + bl StartSpriteAnim + adds r2, r4, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r5, 0x1] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + movs r0, 0x1 + strh r0, [r4, 0x32] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80678F0 + + thumb_func_start sub_8067924 +sub_8067924: @ 8067924 + adds r1, 0x3F + ldrb r0, [r1] + lsls r0, 27 + lsrs r0, 31 + bx lr + thumb_func_end sub_8067924 + + thumb_func_start sub_8067930 +sub_8067930: @ 8067930 + movs r0, 0x1 + bx lr + thumb_func_end sub_8067930 + + thumb_func_start sub_8067934 +sub_8067934: @ 8067934 + adds r1, 0x2C + ldrb r0, [r1] + movs r2, 0x40 + orrs r0, r2 + strb r0, [r1] + movs r0, 0x1 + bx lr + thumb_func_end sub_8067934 + + thumb_func_start sub_8067944 +sub_8067944: @ 8067944 + movs r0, 0 + strh r0, [r1, 0x26] + ldrh r0, [r1, 0x32] + adds r0, 0x1 + strh r0, [r1, 0x32] + movs r0, 0 + bx lr + thumb_func_end sub_8067944 + + thumb_func_start sub_8067954 +sub_8067954: @ 8067954 + push {lr} + adds r2, r1, 0 + ldrh r0, [r2, 0x26] + subs r0, 0x8 + strh r0, [r2, 0x26] + lsls r0, 16 + asrs r0, 16 + movs r1, 0xA0 + negs r1, r1 + cmp r0, r1 + bne _08067970 + ldrh r0, [r2, 0x32] + adds r0, 0x1 + strh r0, [r2, 0x32] +_08067970: + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_8067954 + + thumb_func_start sub_8067978 +sub_8067978: @ 8067978 + ldr r0, _08067988 @ =0x0000ff60 + strh r0, [r1, 0x26] + ldrh r0, [r1, 0x32] + adds r0, 0x1 + strh r0, [r1, 0x32] + movs r0, 0 + bx lr + .align 2, 0 +_08067988: .4byte 0x0000ff60 + thumb_func_end sub_8067978 + + thumb_func_start sub_806798C +sub_806798C: @ 806798C + push {lr} + ldrh r0, [r1, 0x26] + adds r0, 0x8 + strh r0, [r1, 0x26] + lsls r0, 16 + cmp r0, 0 + bne _080679A0 + ldrh r0, [r1, 0x32] + adds r0, 0x1 + strh r0, [r1, 0x32] +_080679A0: + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_806798C + + thumb_func_start sub_80679A8 +sub_80679A8: @ 80679A8 + movs r0, 0x1 + bx lr + thumb_func_end sub_80679A8 + + thumb_func_start npc_obj_transfer_image_anim_pause_flag +npc_obj_transfer_image_anim_pause_flag: @ 80679AC + push {lr} + ldrb r0, [r0, 0x1] + lsls r0, 29 + cmp r0, 0 + bge _080679C2 + adds r0, r1, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] +_080679C2: + pop {r0} + bx r0 + thumb_func_end npc_obj_transfer_image_anim_pause_flag + + thumb_func_start sub_80679C8 +sub_80679C8: @ 80679C8 + push {r4,lr} + adds r4, r0, 0 + ldrb r3, [r4, 0x1] + lsls r0, r3, 28 + cmp r0, 0 + bge _080679F0 + adds r2, r1, 0 + adds r2, 0x2C + ldrb r1, [r2] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r3 + movs r1, 0x9 + negs r1, r1 + ands r0, r1 + strb r0, [r4, 0x1] +_080679F0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80679C8 + + thumb_func_start sub_80679F8 +sub_80679F8: @ 80679F8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8067A10 + adds r0, r4, 0 + adds r1, r5, 0 + bl npc_update_obj_anim_flag + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80679F8 + + thumb_func_start sub_8067A10 +sub_8067A10: @ 8067A10 + push {r4-r7,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r1, [r5, 0x1] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + ldrb r0, [r5, 0x5] + bl GetObjectEventGraphicsInfo + adds r7, r0, 0 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08067A74 + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldr r2, _08067A6C @ =gSpriteCoordOffsetX + adds r0, r1 + ldrh r2, [r2] + adds r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r1, [r4, 0x26] + ldrh r0, [r4, 0x22] + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x29 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + ldr r2, _08067A70 @ =gSpriteCoordOffsetY + adds r0, r1 + ldrh r2, [r2] + adds r0, r2 + b _08067A9C + .align 2, 0 +_08067A6C: .4byte gSpriteCoordOffsetX +_08067A70: .4byte gSpriteCoordOffsetY +_08067A74: + ldrh r1, [r4, 0x24] + ldrh r0, [r4, 0x20] + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x28 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 + lsls r0, 16 + lsrs r3, r0, 16 + ldrh r1, [r4, 0x26] + ldrh r0, [r4, 0x22] + adds r1, r0 + adds r0, r4, 0 + adds r0, 0x29 + ldrb r0, [r0] + lsls r0, 24 + asrs r0, 24 + adds r0, r1 +_08067A9C: + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r0, [r7, 0x8] + adds r0, r3 + lsls r0, 16 + lsrs r6, r0, 16 + ldrh r0, [r7, 0xA] + adds r0, r2 + lsls r0, 16 + lsrs r7, r0, 16 + ldr r0, _08067B00 @ =gSaveBlock1Ptr + ldr r0, [r0] + ldrh r1, [r0, 0x4] + ldr r0, _08067B04 @ =0x00000401 + ldr r4, _08067B08 @ =0x0000fff0 + cmp r1, r0 + bne _08067AC6 + ldrb r0, [r5, 0x8] + cmp r0, 0x1 + bne _08067AC6 + subs r4, 0x10 +_08067AC6: + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0xFF + bgt _08067AD6 + lsls r1, r6, 16 + lsls r0, r4, 16 + cmp r1, r0 + bge _08067ADE +_08067AD6: + ldrb r0, [r5, 0x1] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r5, 0x1] +_08067ADE: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0xAF + bgt _08067AF2 + lsls r0, r7, 16 + asrs r0, 16 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bge _08067AFA +_08067AF2: + ldrb r0, [r5, 0x1] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r5, 0x1] +_08067AFA: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08067B00: .4byte gSaveBlock1Ptr +_08067B04: .4byte 0x00000401 +_08067B08: .4byte 0x0000fff0 + thumb_func_end sub_8067A10 + + thumb_func_start npc_update_obj_anim_flag +npc_update_obj_anim_flag: @ 8067B0C + push {lr} + adds r2, r1, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r3, 0x5 + negs r3, r3 + ands r3, r1 + strb r3, [r2] + ldrb r1, [r0, 0x1] + movs r0, 0x60 + ands r0, r1 + cmp r0, 0 + beq _08067B2E + movs r1, 0x4 + adds r0, r3, 0 + orrs r0, r1 + strb r0, [r2] +_08067B2E: + pop {r0} + bx r0 + thumb_func_end npc_update_obj_anim_flag + + .align 2, 0 @ Don't pad with nop. |