diff options
Diffstat (limited to 'asm/field_map_obj.s')
-rw-r--r-- | asm/field_map_obj.s | 20270 |
1 files changed, 20270 insertions, 0 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s new file mode 100644 index 000000000..a84b7d256 --- /dev/null +++ b/asm/field_map_obj.s @@ -0,0 +1,20270 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start npc_clear_ids_and_state +npc_clear_ids_and_state: @ 808D3F0 + 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: @ 808D410 + push {r4,r5,lr} + movs r4, 0 + ldr r5, =0x02037350 +_0808D416: + 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 _0808D416 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end npcs_clear_ids_and_state + + thumb_func_start sub_808D438 +sub_808D438: @ 808D438 + push {lr} + bl strange_npc_table_clear + bl npcs_clear_ids_and_state + bl ClearPlayerAvatarInfo + bl sub_808D450 + pop {r0} + bx r0 + thumb_func_end sub_808D438 + + thumb_func_start sub_808D450 +sub_808D450: @ 808D450 + push {r4-r6,lr} + mov r6, r10 + mov r5, r9 + mov r4, r8 + push {r4-r6} + ldr r0, =gFieldEffectObjectTemplatePointers + ldr r0, [r0, 0x54] + mov r9, r0 + movs r1, 0 + movs r2, 0 + movs r3, 0x1F + bl AddObjectToBack + lsls r0, 24 + lsrs r0, 24 + ldr r1, =0x02020630 + 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 obj_alloc_rotscale_entry + adds r0, r4, 0 + movs r1, 0 + bl StartObjectRotScalAnim + 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 AddObjectToBack + 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 obj_alloc_rotscale_entry + adds r0, r4, 0 + movs r1, 0x1 + bl StartObjectRotScalAnim + 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 + .pool + thumb_func_end sub_808D450 + + thumb_func_start sub_808D4F4 +sub_808D4F4: @ 808D4F4 + push {lr} + movs r1, 0 + ldr r2, =0x02037350 + ldrb r0, [r2] + b _0808D518 + .pool +_0808D504: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bhi _0808D51E + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0] +_0808D518: + lsls r0, 31 + cmp r0, 0 + bne _0808D504 +_0808D51E: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_808D4F4 + + thumb_func_start GetFieldObjectIdByLocalIdAndMap +@ u8 GetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId) +GetFieldObjectIdByLocalIdAndMap: @ 808D524 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + cmp r0, 0xFE + bls _0808D53C + bl GetFieldObjectIdByLocalId + b _0808D540 +_0808D53C: + bl GetFieldObjectIdByLocalIdAndMapInternal +_0808D540: + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end GetFieldObjectIdByLocalIdAndMap + + thumb_func_start TryGetFieldObjectIdByLocalIdAndMap +@ bool8 TryGetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId, u8 *fieldObjectId) +TryGetFieldObjectIdByLocalIdAndMap: @ 808D548 + 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 GetFieldObjectIdByLocalIdAndMap + strb r0, [r4] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _0808D56A + movs r0, 0 + b _0808D56C +_0808D56A: + movs r0, 0x1 +_0808D56C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end TryGetFieldObjectIdByLocalIdAndMap + + thumb_func_start GetFieldObjectIdByXY +@ u8 GetFieldObjectIdByXY(s16 x, s16 y) +GetFieldObjectIdByXY: @ 808D574 + push {r4-r6,lr} + movs r3, 0 + ldr r5, =0x02037350 + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r1, 16 +_0808D582: + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r5 + ldrb r0, [r2] + lsls r0, 31 + cmp r0, 0 + beq _0808D5A2 + movs r6, 0x10 + ldrsh r0, [r2, r6] + cmp r0, r4 + bne _0808D5A2 + movs r6, 0x12 + ldrsh r0, [r2, r6] + cmp r0, r1 + beq _0808D5AC +_0808D5A2: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _0808D582 +_0808D5AC: + adds r0, r3, 0 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end GetFieldObjectIdByXY + + thumb_func_start GetFieldObjectIdByLocalIdAndMapInternal +@ u8 GetFieldObjectIdByLocalIdAndMapInternal(u8 localId, u8 mapId, u8 mapGroupId) +GetFieldObjectIdByLocalIdAndMapInternal: @ 808D5B8 + 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, =0x02037350 +_0808D5CA: + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r3, r0, r6 + ldrb r0, [r3] + lsls r0, 31 + cmp r0, 0 + beq _0808D5F4 + ldrb r0, [r3, 0x8] + cmp r0, r5 + bne _0808D5F4 + ldrb r0, [r3, 0x9] + cmp r0, r4 + bne _0808D5F4 + ldrb r0, [r3, 0xA] + cmp r0, r2 + bne _0808D5F4 + adds r0, r1, 0 + b _0808D600 + .pool +_0808D5F4: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xF + bls _0808D5CA + movs r0, 0x10 +_0808D600: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end GetFieldObjectIdByLocalIdAndMapInternal + + thumb_func_start GetFieldObjectIdByLocalId +@ u8 GetFieldObjectIdByLocalId(u8 localId) +GetFieldObjectIdByLocalId: @ 808D608 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r4, =0x02037350 +_0808D612: + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r4 + ldrb r0, [r1] + lsls r0, 31 + cmp r0, 0 + beq _0808D630 + ldrb r0, [r1, 0x8] + cmp r0, r3 + bne _0808D630 + adds r0, r2, 0 + b _0808D63C + .pool +_0808D630: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _0808D612 + movs r0, 0x10 +_0808D63C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetFieldObjectIdByLocalId + + thumb_func_start InitFieldObjectStateFromTemplate +@ u8 InitFieldObjectStateFromTemplate(struct FieldObjectTemplate *fieldObjectTemplate, u8 mapId, u8 mapGroupId) +InitFieldObjectStateFromTemplate: @ 808D644 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r5, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + lsls r2, 24 + lsrs r7, r2, 24 + ldrb r0, [r5] + adds r1, r6, 0 + adds r2, r7, 0 + mov r3, sp + bl GetAvailableFieldObjectSlot + lsls r0, 24 + cmp r0, 0 + beq _0808D66E + movs r0, 0x10 + b _0808D762 +_0808D66E: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r4, r0, r1 + adds r0, r4, 0 + bl npc_clear_ids_and_state + ldrh r3, [r5, 0x4] + adds r3, 0x7 + lsls r3, 16 + lsrs r3, 16 + ldrh r2, [r5, 0x6] + adds r2, 0x7 + lsls r2, 16 + lsrs r2, 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 r6, [r4, 0x9] + strb r7, [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 r7, 0xF + adds r1, r7, 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, r7 + 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, r7 + 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, =gUnknown_085055CD + 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 FieldObjectSetDirection + adds r0, r4, 0 + bl FieldObjectHandleDynamicGraphicsId + ldr r1, =gUnknown_0850557C + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _0808D75E + ldrb r2, [r4, 0x19] + adds r0, r7, 0 + ands r0, r2 + cmp r0, 0 + bne _0808D746 + 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] +_0808D746: + ldrb r2, [r4, 0x19] + movs r0, 0xF0 + ands r0, r2 + cmp r0, 0 + bne _0808D75E + lsrs r1, r2, 4 + adds r1, 0x1 + lsls r1, 4 + adds r0, r7, 0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x19] +_0808D75E: + mov r0, sp + ldrb r0, [r0] +_0808D762: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end InitFieldObjectStateFromTemplate + + thumb_func_start sub_808D77C +sub_808D77C: @ 808D77C + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldr r4, =0x02037318 + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _0808D7FE + bl InBattlePyramid + lsls r0, 24 + cmp r0, 0 + beq _0808D7A8 + bl sub_81AAA40 + lsls r0, 24 + lsrs r6, r0, 24 + b _0808D7CA + .pool +_0808D7A8: + bl InTrainerHill + cmp r0, 0 + beq _0808D7C6 + movs r6, 0x2 + b _0808D7CA +_0808D7B4: + ldr r0, [r7] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + adds r0, r4, 0 + bl InitFieldObjectStateFromTemplate + lsls r0, 24 + lsrs r0, 24 + b _0808D800 +_0808D7C6: + ldr r0, [r4, 0x4] + ldrb r6, [r0] +_0808D7CA: + movs r5, 0 + cmp r5, r6 + bcs _0808D7FE + ldr r7, =0x03005d8c +_0808D7D2: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 3 + movs r1, 0xC7 + lsls r1, 4 + adds r0, r1 + ldr r1, [r7] + adds r4, r1, r0 + ldrb r0, [r4] + cmp r0, r8 + bne _0808D7F4 + ldrh r0, [r4, 0x14] + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0808D7B4 +_0808D7F4: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r6 + bcc _0808D7D2 +_0808D7FE: + movs r0, 0x10 +_0808D800: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_808D77C + + thumb_func_start GetAvailableFieldObjectSlot +@ bool8 GetAvailableFieldObjectSlot(u16 localId, u8 mapId, u8 mapGroupId, u8 *fieldObjectId) +GetAvailableFieldObjectSlot: @ 808D810 + 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, =0x02037350 + ldrb r0, [r1] + lsls r0, 31 + adds r7, r1, 0 + cmp r0, 0 + beq _0808D864 + adds r3, r1, 0 +_0808D830: + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r1, r0, r3 + ldrb r0, [r1, 0x8] + cmp r0, r6 + bne _0808D84A + ldrb r0, [r1, 0x9] + cmp r0, r5 + bne _0808D84A + ldrb r0, [r1, 0xA] + cmp r0, r4 + beq _0808D868 +_0808D84A: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bhi _0808D868 + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r0, r7 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + bne _0808D830 +_0808D864: + cmp r2, 0xF + bls _0808D870 +_0808D868: + movs r0, 0x1 + b _0808D8A4 + .pool +_0808D870: + mov r0, r12 + strb r2, [r0] + ldr r1, =0x02037350 +_0808D876: + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r3, r0, r1 + ldrb r0, [r3] + lsls r0, 31 + cmp r0, 0 + beq _0808D898 + ldrb r0, [r3, 0x8] + cmp r0, r6 + bne _0808D898 + ldrb r0, [r3, 0x9] + cmp r0, r5 + bne _0808D898 + ldrb r0, [r3, 0xA] + cmp r0, r4 + beq _0808D868 +_0808D898: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0xF + bls _0808D876 + movs r0, 0 +_0808D8A4: + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end GetAvailableFieldObjectSlot + + thumb_func_start RemoveFieldObject +@ void RemoveFieldObject(npc_state *fieldObject) +RemoveFieldObject: @ 808D8B0 + push {lr} + ldrb r2, [r0] + movs r1, 0x2 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + bl RemoveFieldObjectInternal + pop {r0} + bx r0 + thumb_func_end RemoveFieldObject + + thumb_func_start RemoveFieldObjectByLocalIdAndMap +@ void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapBank) +RemoveFieldObjectByLocalIdAndMap: @ 808D8C4 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808D902 + mov r0, sp + ldrb r0, [r0] + bl GetFieldObjectFlagIdByFieldObjectId + 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, =0x02037350 + adds r0, r1 + bl RemoveFieldObject +_0808D902: + add sp, 0x4 + pop {r0} + bx r0 + .pool + thumb_func_end RemoveFieldObjectByLocalIdAndMap + + thumb_func_start RemoveFieldObjectInternal +@ void RemoveFieldObjectInternal(npc_state *fieldObject) +RemoveFieldObjectInternal: @ 808D90C + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldrb r0, [r4, 0x5] + bl GetFieldObjectGraphicsInfo + ldrh r2, [r0, 0x6] + ldr r1, =0xffff0000 + ldr r0, [sp, 0x4] + ands r0, r1 + orrs r0, r2 + str r0, [sp, 0x4] + ldr r2, =0x02020630 + 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 RemoveObjectAndFreeTiles + add sp, 0x8 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end RemoveFieldObjectInternal + + thumb_func_start sub_808D958 +sub_808D958: @ 808D958 + push {r4,lr} + movs r4, 0 +_0808D95C: + ldr r0, =0x02037590 + ldrb r0, [r0, 0x5] + cmp r4, r0 + beq _0808D972 + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + bl RemoveFieldObject +_0808D972: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0808D95C + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808D958 + + thumb_func_start SpawnFieldObjectInternal +@ u8 SpawnFieldObjectInternal(struct FieldObjectTemplate *romFieldObject, struct objtemplate *template, int mapId, int mapGroupId, u16 movingCameraOffsetX, u16 movingCameraOffsetY) +SpawnFieldObjectInternal: @ 808D98C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r8, r1 + adds r1, r2, 0 + adds r2, r3, 0 + ldr r3, [sp, 0x24] + ldr r4, [sp, 0x28] + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + lsls r3, 16 + lsrs r3, 16 + mov r10, r3 + lsls r4, 16 + lsrs r4, 16 + str r4, [sp] + bl InitFieldObjectStateFromTemplate + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + cmp r0, 0x10 + bne _0808D9C8 + movs r0, 0x10 + b _0808DB2C +_0808D9C8: + mov r0, r9 + lsls r4, r0, 3 + adds r0, r4, r0 + lsls r0, 2 + ldr r1, =0x02037350 + adds r6, r0, r1 + ldrb r0, [r6, 0x5] + bl GetFieldObjectGraphicsInfo + adds r7, r0, 0 + ldrb r0, [r7, 0xC] + lsls r0, 28 + lsrs r5, r0, 28 + cmp r5, 0 + bne _0808D9F4 + ldrh r0, [r7, 0x2] + movs r1, 0 + bl npc_load_two_palettes__no_record + b _0808DA16 + .pool +_0808D9F4: + cmp r5, 0xA + bne _0808DA02 + ldrh r0, [r7, 0x2] + movs r1, 0xA + bl npc_load_two_palettes__and_record + b _0808DA16 +_0808DA02: + cmp r5, 0xF + bls _0808DA16 + adds r0, r5, 0 + subs r0, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r7, 0x2] + adds r1, r5, 0 + bl sub_808EAB0 +_0808DA16: + ldrb r0, [r6, 0x6] + cmp r0, 0x4C + bne _0808DA24 + ldrb r0, [r6, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r6, 0x1] +_0808DA24: + ldr r1, =0x0000ffff + adds r0, r1, 0 + mov r2, r8 + strh r0, [r2, 0x2] + mov r0, r8 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AddObjectToFront + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + cmp r0, 0x40 + bne _0808DA64 + ldr r0, =0x02037350 + mov r2, r9 + 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 _0808DB2C + .pool +_0808DA64: + mov r1, r8 + lsls r0, r1, 4 + add r0, r8 + lsls r0, 2 + ldr r1, =0x02020630 + adds r4, r0, r1 + mov r2, r10 + lsls r0, r2, 16 + asrs r0, 16 + ldrh r1, [r6, 0x10] + adds r0, r1 + lsls r0, 16 + asrs r0, 16 + ldr r2, [sp] + 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_8092FF0 + ldrh r0, [r7, 0x8] + lsls r0, 16 + asrs r0, 17 + negs r0, r0 + adds r1, r4, 0 + adds r1, 0x28 + strb r0, [r1] + ldrh r0, [r7, 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] + lsls r2, r5, 4 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + 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, r9 + strh r0, [r4, 0x2E] + mov r1, r8 + strb r1, [r6, 0x4] + ldrb r1, [r7, 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] + lsls r0, 27 + cmp r0, 0 + blt _0808DB16 + ldrb r0, [r6, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl FieldObjectDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartObjectImageAnim +_0808DB16: + ldrb r0, [r6, 0xB] + lsrs r0, 4 + adds r1, r4, 0 + movs r2, 0x1 + bl SetObjectSubpriorityByZCoord + adds r0, r6, 0 + adds r1, r4, 0 + bl sub_8096518 + mov r0, r9 +_0808DB2C: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end SpawnFieldObjectInternal + + thumb_func_start SpawnFieldObject +@ u8 SpawnFieldObject(struct FieldObjectTemplate *romNpc, u8 mapId, u8 mapGroupId, u16 movingCameraOffsetX, u16 movingCameraOffsetY) +SpawnFieldObject: @ 808DB40 + 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 GetFieldObjectGraphicsInfo + adds r7, r0, 0 + add r2, sp, 0x20 + mov r0, r9 + add r1, sp, 0x8 + bl MakeObjectTemplateFromFieldObjectTemplate + ldrh r3, [r7, 0x6] + ldr r2, =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 SpawnFieldObjectInternal + lsls r0, 24 + lsrs r2, r0, 24 + adds r5, r2, 0 + cmp r2, 0x10 + bne _0808DBBC + movs r0, 0x10 + b _0808DBF2 + .pool +_0808DBBC: + ldr r4, =0x02020630 + ldr r1, =0x02037350 + 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 _0808DBF0 + ldrb r1, [r3, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + adds r1, r2, 0 + bl SetSpriteOamTables_NoPriorityFromTable +_0808DBF0: + adds r0, r5, 0 +_0808DBF2: + add sp, 0x2C + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end SpawnFieldObject + + thumb_func_start SpawnSpecialFieldObject +@ u8 SpawnSpecialFieldObject(struct FieldObjectTemplate *romFieldObject) +SpawnSpecialFieldObject: @ 808DC08 + 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 GetFieldObjectMovingCameraOffset + ldr r0, =0x03005d8c + 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 SpawnFieldObject + lsls r0, 24 + lsrs r0, 24 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end SpawnSpecialFieldObject + + thumb_func_start SpawnSpecialFieldObjectParametrized +@ u8 SpawnSpecialFieldObjectParametrized(u8 graphicsId, u8 movementBehavior, u8 localId, u16 x, u16 y, u8 z) +SpawnSpecialFieldObjectParametrized: @ 808DC44 + 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, =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 SpawnSpecialFieldObject + lsls r0, 24 + lsrs r0, 24 + add sp, 0x18 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end SpawnSpecialFieldObjectParametrized + + thumb_func_start show_sprite +show_sprite: @ 808DCAC + 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 GetFieldObjectTemplateByLocalIdAndMap + adds r5, r0, 0 + cmp r5, 0 + beq _0808DCF2 + mov r4, sp + adds r4, 0x6 + add r0, sp, 0x4 + adds r1, r4, 0 + bl GetFieldObjectMovingCameraOffset + 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 SpawnFieldObject + lsls r0, 24 + lsrs r0, 24 + b _0808DCF4 +_0808DCF2: + movs r0, 0x10 +_0808DCF4: + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end show_sprite + + thumb_func_start MakeObjectTemplateFromFieldObjectGraphicsInfo +@ void MakeObjectTemplateFromFieldObjectGraphicsInfo(u8 graphicsId, void ( *callback)(), struct objtemplate *objectTemplate, SpriteOamTable **spriteOamTables) +MakeObjectTemplateFromFieldObjectGraphicsInfo: @ 808DCFC + push {r4-r6,lr} + adds r5, r1, 0 + adds r4, r2, 0 + adds r6, r3, 0 + lsls r0, 24 + lsrs r0, 24 + bl GetFieldObjectGraphicsInfo + ldrh r1, [r0] + strh r1, [r4] + ldrh r1, [r0, 0x2] + strh r1, [r4, 0x2] + ldr r1, [r0, 0x10] + str r1, [r4, 0x4] + ldr r1, [r0, 0x18] + str r1, [r4, 0x8] + ldr r1, [r0, 0x1C] + str r1, [r4, 0xC] + ldr r1, [r0, 0x20] + str r1, [r4, 0x10] + str r5, [r4, 0x14] + ldr r0, [r0, 0x14] + str r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end MakeObjectTemplateFromFieldObjectGraphicsInfo + + thumb_func_start MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex +@ void MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(u16 graphicsId, u16 callbackIndex, struct objtemplate *objectTemplate, SpriteOamTable **spriteOamTables) +MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex: @ 808DD30 + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + ldr r4, =gUnknown_08505438 + lsrs r1, 14 + adds r1, r4 + ldr r1, [r1] + bl MakeObjectTemplateFromFieldObjectGraphicsInfo + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex + + thumb_func_start MakeObjectTemplateFromFieldObjectTemplate +@ void MakeObjectTemplateFromFieldObjectTemplate(struct FieldObjectTemplate *fieldObjectTemplate, struct objtemplate *objectTemplate, SpriteOamTable **spriteOamTables) +MakeObjectTemplateFromFieldObjectTemplate: @ 808DD50 + 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 MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end MakeObjectTemplateFromFieldObjectTemplate + + thumb_func_start AddPseudoFieldObject +@ void AddPseudoFieldObject(u8 graphicsId, void ( *callback)(), u16 x, u16 y, u8 subpriority) +AddPseudoFieldObject: @ 808DD68 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, [sp, 0x20] + lsls r4, 16 + lsrs r4, 16 + lsls r2, 16 + lsrs r2, 16 + mov r8, r2 + lsls r3, 16 + lsrs r7, r3, 16 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + movs r0, 0x18 + bl Alloc + adds r6, r0, 0 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + mov r3, sp + bl MakeObjectTemplateFromFieldObjectGraphicsInfo + ldrh r1, [r6, 0x2] + ldr r0, =0x0000ffff + cmp r1, r0 + beq _0808DDAE + adds r0, r1, 0 + bl sub_808E894 +_0808DDAE: + mov r0, r8 + lsls r1, r0, 16 + asrs r1, 16 + lsls r2, r7, 16 + asrs r2, 16 + adds r0, r6, 0 + mov r3, r9 + bl AddObjectToFront + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r6, 0 + bl Free + cmp r5, 0x40 + beq _0808DDF2 + ldr r1, [sp] + cmp r1, 0 + beq _0808DDF2 + lsls r4, r5, 4 + adds r4, r5 + lsls r4, 2 + ldr r0, =0x02020630 + adds r4, r0 + adds r0, r4, 0 + bl SetSpriteOamTables_NoPriorityFromTable + adds r4, 0x42 + ldrb r1, [r4] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4] +_0808DDF2: + adds r0, r5, 0 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end AddPseudoFieldObject + + thumb_func_start sprite_new +sprite_new: @ 808DE0C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + adds r5, r0, 0 + ldr r0, [sp, 0x40] + ldr r4, [sp, 0x44] + lsls r5, 24 + lsrs r5, 24 + lsls r1, 24 + lsrs r1, 24 + mov r9, 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 + lsls r4, 24 + lsrs r4, 24 + mov r10, r4 + adds r0, r5, 0 + bl GetFieldObjectGraphicsInfo + adds r4, r0, 0 + ldr r1, =sub_8097AC8 + add r3, sp, 0x1C + adds r0, r5, 0 + mov r2, sp + bl MakeObjectTemplateFromFieldObjectGraphicsInfo + mov r1, sp + ldr r2, =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_80930E0 + mov r2, r8 + movs r0, 0 + ldrsh r1, [r2, r0] + movs r0, 0 + ldrsh r2, [r6, r0] + mov r0, sp + movs r3, 0 + bl AddObjectToBack + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x40 + beq _0808DF6C + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + ldr r1, =0x02020630 + 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 r0, [r4, 0xC] + lsls r0, 28 + lsrs r0, 24 + ldrb r1, [r5, 0x5] + movs r3, 0xF + adds r2, r3, 0 + ands r2, r1 + orrs r2, r0 + strb r2, [r5, 0x5] + lsls r1, r2, 24 + lsrs r0, r1, 28 + cmp r0, 0xF + bls _0808DEE4 + subs r0, 0x10 + lsls r0, 4 + ands r2, r3 + orrs r2, r0 + strb r2, [r5, 0x5] +_0808DEE4: + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + mov r2, r9 + strh r2, [r5, 0x2E] + strh r7, [r5, 0x30] + ldrb r1, [r4, 0xC] + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0xA + bne _0808DF18 + ldrh r0, [r4, 0x2] + lsls r1, 28 + lsrs r1, 28 + bl npc_load_two_palettes__and_record + b _0808DF2C + .pool +_0808DF18: + lsls r1, 28 + lsrs r0, r1, 28 + cmp r0, 0xF + bls _0808DF2C + ldrh r0, [r4, 0x2] + lsrs r2, r1, 28 + movs r1, 0xF0 + orrs r1, r2 + bl sub_808EAB0 +_0808DF2C: + ldr r1, [sp, 0x1C] + cmp r1, 0 + beq _0808DF48 + adds r0, r5, 0 + bl SetSpriteOamTables_NoPriorityFromTable + 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] +_0808DF48: + adds r0, r5, 0 + adds r1, r7, 0 + bl InitObjectPriorityByZCoord + adds r0, r7, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl SetObjectSubpriorityByZCoord + mov r0, r10 + bl FieldObjectDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartObjectImageAnim +_0808DF6C: + adds r0, r6, 0 + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sprite_new + + thumb_func_start SpawnFieldObjectsInView +@ void SpawnFieldObjectsInView(u16 movingCameraOffsetX, u16 movingCameraOffsetY) +SpawnFieldObjectsInView: @ 808DF80 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x4] + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0x8] + ldr r5, =0x02037318 + ldr r0, [r5, 0x4] + cmp r0, 0 + beq _0808E078 + ldr r0, =0x03005d8c + ldr r2, [r0] + ldrh r1, [r2] + subs r0, r1, 0x2 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + adds r1, 0x11 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp, 0xC] + ldrh r4, [r2, 0x2] + adds r0, r4, 0 + adds r0, 0x10 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + bl InBattlePyramid + lsls r0, 24 + cmp r0, 0 + beq _0808DFE0 + bl sub_81AAA40 + lsls r0, 24 + lsrs r6, r0, 24 + b _0808DFF0 + .pool +_0808DFE0: + bl InTrainerHill + cmp r0, 0 + beq _0808DFEC + movs r6, 0x2 + b _0808DFF0 +_0808DFEC: + ldr r0, [r5, 0x4] + ldrb r6, [r0] +_0808DFF0: + movs r5, 0 + cmp r5, r6 + bcs _0808E078 + lsls r0, r4, 16 + asrs r0, 16 + mov r9, r0 + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + mov r8, r0 +_0808E004: + lsls r0, r5, 1 + adds r0, r5 + lsls r0, 3 + movs r2, 0xC7 + lsls r2, 4 + adds r0, r2 + ldr r3, =0x03005d8c + ldr r1, [r3] + 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 _0808E06E + mov r7, r10 + lsls r0, r7, 16 + asrs r0, 16 + cmp r0, r1 + blt _0808E06E + lsls r0, r2, 16 + asrs r1, r0, 16 + cmp r8, r1 + bgt _0808E06E + ldr r2, [sp, 0xC] + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, r1 + blt _0808E06E + ldrh r0, [r4, 0x14] + bl FlagGet + lsls r0, 24 + cmp r0, 0 + bne _0808E06E + ldr r3, =0x03005d8c + ldr r0, [r3] + ldrb r1, [r0, 0x5] + ldrb r2, [r0, 0x4] + ldr r7, [sp, 0x4] + lsls r3, r7, 16 + ldr r7, [sp, 0x8] + lsls r0, r7, 16 + asrs r0, 16 + str r0, [sp] + adds r0, r4, 0 + asrs r3, 16 + bl SpawnFieldObject +_0808E06E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, r6 + bcc _0808E004 +_0808E078: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end SpawnFieldObjectsInView + + thumb_func_start RemoveFieldObjectsOutsideView +@ void RemoveFieldObjectsOutsideView() +RemoveFieldObjectsOutsideView: @ 808E08C + push {r4-r6,lr} + movs r3, 0 + ldr r6, =0x02032308 +_0808E092: + movs r2, 0 + movs r4, 0 + adds r5, r3, 0x1 +_0808E098: + lsls r0, r2, 2 + adds r1, r0, r6 + ldrb r0, [r1] + cmp r0, 0 + beq _0808E0AA + ldrb r1, [r1, 0x2] + cmp r3, r1 + bne _0808E0AA + movs r4, 0x1 +_0808E0AA: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _0808E098 + cmp r4, 0 + bne _0808E0D2 + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + ldr r1, =0x02037350 + adds r2, r0, r1 + ldr r0, [r2] + ldr r1, =0x00010001 + ands r0, r1 + cmp r0, 0x1 + bne _0808E0D2 + adds r0, r2, 0 + bl RemoveFieldObjectIfOutsideView +_0808E0D2: + lsls r0, r5, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _0808E092 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end RemoveFieldObjectsOutsideView + + thumb_func_start RemoveFieldObjectIfOutsideView +@ void RemoveFieldObjectIfOutsideView(npc_state *fieldObject) +RemoveFieldObjectIfOutsideView: @ 808E0EC + push {r4-r7,lr} + adds r3, r0, 0 + ldr r0, =0x03005d8c + 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 _0808E132 + lsls r0, r5, 16 + asrs r0, 16 + cmp r2, r0 + bgt _0808E132 + movs r0, 0x12 + ldrsh r1, [r3, r0] + lsls r0, r4, 16 + asrs r0, 16 + cmp r1, r0 + blt _0808E132 + lsls r0, r6, 16 + asrs r0, 16 + cmp r1, r0 + ble _0808E160 +_0808E132: + movs r0, 0xC + ldrsh r1, [r3, r0] + lsls r0, r7, 16 + asrs r0, 16 + cmp r1, r0 + blt _0808E15A + lsls r0, r5, 16 + asrs r0, 16 + cmp r1, r0 + bgt _0808E15A + movs r0, 0xE + ldrsh r1, [r3, r0] + lsls r0, r4, 16 + asrs r0, 16 + cmp r1, r0 + blt _0808E15A + lsls r0, r6, 16 + asrs r0, 16 + cmp r1, r0 + ble _0808E160 +_0808E15A: + adds r0, r3, 0 + bl RemoveFieldObject +_0808E160: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end RemoveFieldObjectIfOutsideView + + thumb_func_start sub_808E16C +sub_808E16C: @ 808E16C + 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, =0x02037350 + lsls r4, 16 + lsls r5, 16 +_0808E186: + lsls r0, r6, 3 + adds r0, r6 + lsls r0, 2 + adds r0, r7 + ldrb r0, [r0] + lsls r0, 31 + cmp r0, 0 + beq _0808E1A0 + adds r0, r6, 0 + asrs r1, r4, 16 + asrs r2, r5, 16 + bl sub_808E1B8 +_0808E1A0: + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0xF + bls _0808E186 + bl sub_808D450 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808E16C + + thumb_func_start sub_808E1B8 +sub_808E1B8: @ 808E1B8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x28 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x24] + movs r7, 0 + ldr r2, =0x02032308 +_0808E1DA: + lsls r0, r7, 2 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + beq _0808E1EC + ldrb r1, [r1, 0x2] + cmp r9, r1 + bne _0808E1EC + b _0808E374 +_0808E1EC: + adds r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x3 + bls _0808E1DA + mov r1, r9 + lsls r0, r1, 3 + add r0, r9 + lsls r0, 2 + ldr r1, =0x02037350 + adds r6, r0, r1 + movs r0, 0 + str r0, [sp, 0x20] + ldrb r0, [r6, 0x5] + bl GetFieldObjectGraphicsInfo + adds r5, r0, 0 + ldrh r2, [r5, 0x6] + ldr r1, =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 MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex + str r4, [sp, 0xC] + mov r1, sp + ldr r2, =0x0000ffff + adds r0, r2, 0 + strh r0, [r1, 0x2] + ldrb r0, [r5, 0xC] + lsls r1, r0, 28 + lsrs r0, r1, 28 + mov r8, r0 + cmp r0, 0 + bne _0808E258 + ldrh r0, [r5, 0x2] + lsrs r1, 28 + bl npc_load_two_palettes__no_record + b _0808E27E + .pool +_0808E258: + mov r2, r8 + cmp r2, 0xA + bne _0808E268 + ldrh r0, [r5, 0x2] + lsrs r1, 28 + bl npc_load_two_palettes__and_record + b _0808E27E +_0808E268: + mov r0, r8 + cmp r0, 0xF + bls _0808E27E + subs r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + ldrh r0, [r5, 0x2] + mov r1, r8 + bl sub_808EAB0 +_0808E27E: + mov r1, sp + ldr r2, =0x0000ffff + adds r0, r2, 0 + strh r0, [r1, 0x2] + mov r0, sp + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl AddObjectToFront + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0x40 + beq _0808E374 + lsls r0, r7, 4 + adds r0, r7 + lsls r0, 2 + ldr r1, =0x02020630 + adds r4, r0, r1 + mov r1, r10 + lsls r0, r1, 16 + asrs r0, 16 + ldrh r2, [r6, 0x10] + adds r0, r2 + lsls r0, 16 + asrs r0, 16 + ldr r2, [sp, 0x24] + 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_8092FF0 + 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 _0808E312 + mov r0, r9 + adds r1, r7, 0 + bl SetPlayerAvatarFieldObjectIdAndObjectId + bl sub_8154228 + strb r0, [r6, 0x1B] +_0808E312: + ldr r1, [sp, 0x20] + cmp r1, 0 + beq _0808E31E + adds r0, r4, 0 + bl SetSpriteOamTables_NoPriorityFromTable +_0808E31E: + mov r0, r8 + lsls r2, r0, 4 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r2] + mov r1, r9 + strh r1, [r4, 0x2E] + strb r7, [r6, 0x4] + ldrb r0, [r6, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _0808E362 + ldrb r0, [r6, 0x6] + cmp r0, 0xB + beq _0808E362 + ldrb r0, [r6, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl FieldObjectDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartObjectImageAnim +_0808E362: + adds r0, r6, 0 + bl sub_808E38C + ldrb r0, [r6, 0xB] + lsrs r0, 4 + adds r1, r4, 0 + movs r2, 0x1 + bl SetObjectSubpriorityByZCoord +_0808E374: + add sp, 0x28 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808E1B8 + + thumb_func_start sub_808E38C +@ void sub_808E38C(struct npc_state *fieldObject) +sub_808E38C: @ 808E38C + 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 FieldObjectClearAnim + pop {r0} + bx r0 + thumb_func_end sub_808E38C + + thumb_func_start SetPlayerAvatarFieldObjectIdAndObjectId +@ void SetPlayerAvatarFieldObjectIdAndObjectId(u8 fieldObjectId, u8 objectId) +SetPlayerAvatarFieldObjectIdAndObjectId: @ 808E3C4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, =0x02037590 + strb r0, [r5, 0x5] + strb r1, [r5, 0x4] + ldr r1, =0x02037350 + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + adds r4, r1 + ldrb r0, [r4, 0x5] + bl GetPlayerAvatarGenderByGraphicsId + strb r0, [r5, 0x7] + ldrb r0, [r4, 0x5] + movs r1, 0x20 + bl SetPlayerAvatarExtraStateTransition + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end SetPlayerAvatarFieldObjectIdAndObjectId + + thumb_func_start FieldObjectSetGraphicsId +@ void FieldObjectSetGraphicsId(npc_state *npcState, u8 graphicsId) +FieldObjectSetGraphicsId: @ 808E3F8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + mov r0, r8 + bl GetFieldObjectGraphicsInfo + adds r6, r0, 0 + ldrb r1, [r7, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + adds r4, r0, r1 + ldrb r0, [r6, 0xC] + lsls r1, r0, 28 + lsrs r5, r1, 28 + cmp r5, 0 + bne _0808E434 + ldrh r0, [r6, 0x2] + adds r1, r5, 0 + bl pal_patch_for_npc + b _0808E456 + .pool +_0808E434: + cmp r5, 0xA + bne _0808E442 + ldrh r0, [r6, 0x2] + lsrs r1, 28 + bl npc_load_two_palettes__and_record + b _0808E456 +_0808E442: + cmp r5, 0xF + bls _0808E456 + adds r0, r5, 0 + subs r0, 0x10 + lsls r0, 24 + lsrs r5, r0, 24 + ldrh r0, [r6, 0x2] + adds r1, r5, 0 + bl sub_808EAB0 +_0808E456: + ldr r0, [r6, 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, [r6, 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 r0, [r6, 0x1C] + str r0, [r4, 0xC] + ldr r0, [r6, 0x18] + str r0, [r4, 0x8] + ldr r0, [r6, 0x14] + str r0, [r4, 0x18] + lsls r2, r5, 4 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] + ldrb r1, [r6, 0xC] + lsls r1, 25 + lsrs r1, 31 + lsls r1, 4 + ldrb r2, [r7, 0x1] + movs r0, 0x11 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0x1] + mov r0, r8 + strb r0, [r7, 0x5] + movs r1, 0x10 + ldrsh r0, [r7, r1] + movs r2, 0x12 + ldrsh r1, [r7, r2] + adds r2, r4, 0 + adds r2, 0x20 + adds r3, r4, 0 + adds r3, 0x22 + bl sub_8093038 + 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 r0, [r7, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _0808E4F8 + bl CameraObjectReset1 +_0808E4F8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end FieldObjectSetGraphicsId + + thumb_func_start sub_808E504 +sub_808E504: @ 808E504 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808E538 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + adds r1, r4, 0 + bl FieldObjectSetGraphicsId +_0808E538: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808E504 + + thumb_func_start FieldObjectTurn +@ void FieldObjectTurn(struct npc_state *fieldObject, u8 direction) +FieldObjectTurn: @ 808E544 + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + bl FieldObjectSetDirection + ldrb r0, [r6, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _0808E58A + ldrb r0, [r6, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r5, =0x02020630 + adds r4, r5 + ldrb r0, [r6, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl FieldObjectDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartObjectImageAnim + ldrb r1, [r6, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r5 + movs r1, 0 + bl SeekObjectImageAnim +_0808E58A: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectTurn + + thumb_func_start FieldObjectTurnByLocalIdAndMap +@ void FieldObjectTurnByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId) +FieldObjectTurnByLocalIdAndMap: @ 808E594 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808E5C8 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + adds r1, r4, 0 + bl FieldObjectTurn +_0808E5C8: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectTurnByLocalIdAndMap + + thumb_func_start sub_808E5D4 +sub_808E5D4: @ 808E5D4 + push {lr} + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r0, 0x5] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, =0x02037350 + adds r0, r2 + bl FieldObjectTurn + pop {r0} + bx r0 + .pool + thumb_func_end sub_808E5D4 + + thumb_func_start get_berry_tree_graphics +@ void get_berry_tree_graphics(npc_state *npcState, struct obj *obj) +get_berry_tree_graphics: @ 808E5F4 + push {r4-r7,lr} + adds r5, r0, 0 + adds r7, r1, 0 + ldrb r0, [r5, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r5, 0x1] + adds r4, r7, 0 + adds r4, 0x3E + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r5, 0x1D] + bl GetStageByBerryTreeId + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + beq _0808E680 + ldrb r1, [r5, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r5, 0x1] + ldrb r1, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrb r0, [r5, 0x1D] + bl GetBerryTypeByBerryTreeId + subs r0, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + subs r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r4, 0x2B + bls _0808E648 + movs r4, 0 +_0808E648: + ldr r0, =gBerryTreeFieldObjectGraphicsIdTablePointers + lsls r4, 2 + adds r0, r4, r0 + ldr r0, [r0] + adds r0, r6 + ldrb r1, [r0] + adds r0, r5, 0 + bl FieldObjectSetGraphicsId + ldr r0, =gBerryTreePicTablePointers + adds r0, r4, r0 + ldr r0, [r0] + str r0, [r7, 0xC] + ldr r0, =gBerryTreePaletteSlotTablePointers + adds r4, r0 + ldr r0, [r4] + adds r0, r6 + ldrb r1, [r0] + lsls r1, 4 + ldrb r2, [r7, 0x5] + movs r0, 0xF + ands r0, r2 + orrs r0, r1 + strb r0, [r7, 0x5] + adds r0, r7, 0 + adds r1, r6, 0 + bl StartObjectImageAnim +_0808E680: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end get_berry_tree_graphics + + thumb_func_start GetFieldObjectGraphicsInfo +@ FieldObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8 graphicsId) +GetFieldObjectGraphicsInfo: @ 808E694 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0xEF + bls _0808E6AC + adds r0, r1, 0 + adds r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + bl VarGetFieldObjectGraphicsId + adds r1, r0, 0 +_0808E6AC: + cmp r1, 0x45 + bne _0808E6C4 + bl sub_81201C8 + lsls r0, 24 + ldr r1, =gMauvilleOldManGraphicsInfoPointers + lsrs r0, 22 + adds r0, r1 + ldr r0, [r0] + b _0808E6D2 + .pool +_0808E6C4: + cmp r1, 0xEE + bls _0808E6CA + movs r1, 0x5 +_0808E6CA: + ldr r0, =gFieldObjectGraphicsInfoPointers + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] +_0808E6D2: + pop {r1} + bx r1 + .pool + thumb_func_end GetFieldObjectGraphicsInfo + + thumb_func_start FieldObjectHandleDynamicGraphicsId +@ void FieldObjectHandleDynamicGraphicsId(struct npc_state *fieldObject) +FieldObjectHandleDynamicGraphicsId: @ 808E6DC + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x5] + cmp r0, 0xEF + bls _0808E6F2 + adds r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + bl VarGetFieldObjectGraphicsId + strb r0, [r4, 0x5] +_0808E6F2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end FieldObjectHandleDynamicGraphicsId + + 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: @ 808E6F8 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808E73A + ldr r2, =0x02037350 + 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] +_0808E73A: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end npc_by_local_id_and_map_set_field_1_bit_x20 + + thumb_func_start FieldObjectGetLocalIdAndMap +@ void FieldObjectGetLocalIdAndMap(struct npc_state *fieldObject, u8 *localId, u8 *mapId, u8 *mapGroupId) +FieldObjectGetLocalIdAndMap: @ 808E748 + 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 FieldObjectGetLocalIdAndMap + + thumb_func_start sub_808E75C +sub_808E75C: @ 808E75C + push {lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl GetFieldObjectIdByXY + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x10 + beq _0808E784 + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] +_0808E784: + pop {r0} + bx r0 + .pool + thumb_func_end sub_808E75C + + thumb_func_start sub_808E78C +sub_808E78C: @ 808E78C + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808E7D2 + mov r0, sp + ldrb r0, [r0] + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + ldr r0, =0x02037350 + adds r2, r0 + ldrb r1, [r2, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02020630 + adds r0, r1 + ldrb r1, [r2, 0x3] + movs r3, 0x4 + orrs r1, r3 + strb r1, [r2, 0x3] + adds r0, 0x43 + strb r4, [r0] +_0808E7D2: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808E78C + + thumb_func_start sub_808E7E4 +sub_808E7E4: @ 808E7E4 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808E820 + mov r0, sp + ldrb r0, [r0] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, =0x02037350 + 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] +_0808E820: + add sp, 0x4 + pop {r0} + bx r0 + .pool + thumb_func_end sub_808E7E4 + + thumb_func_start sub_808E82C +sub_808E82C: @ 808E82C + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808E870 + ldr r2, =0x02037350 + 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, =0x02020630 + adds r0, r1 + strh r5, [r0, 0x24] + strh r4, [r0, 0x26] +_0808E870: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808E82C + + thumb_func_start gpu_pal_allocator_reset__manage_upper_four +gpu_pal_allocator_reset__manage_upper_four: @ 808E880 + push {lr} + bl ResetObjectPaletteAllocator + ldr r1, =0x0300301c + movs r0, 0xC + strb r0, [r1] + pop {r0} + bx r0 + .pool + thumb_func_end gpu_pal_allocator_reset__manage_upper_four + + thumb_func_start sub_808E894 +sub_808E894: @ 808E894 + push {lr} + lsls r0, 16 + lsrs r0, 16 + bl FindFieldObjectPaletteIndexByTag + lsls r0, 24 + lsrs r1, r0, 24 + ldr r0, =0x000011ff + cmp r1, r0 + beq _0808E8B2 + lsls r0, r1, 3 + ldr r1, =gUnknown_0850BBC8 + adds r0, r1 + bl sub_808E8F4 +_0808E8B2: + pop {r0} + bx r0 + .pool + thumb_func_end sub_808E894 + + thumb_func_start sub_808E8C0 +sub_808E8C0: @ 808E8C0 + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + ldrh r0, [r5] + ldr r1, =0x000011ff + cmp r0, r1 + beq _0808E8EA + adds r6, r1, 0 +_0808E8D0: + lsls r0, r4, 1 + adds r0, r5 + ldrh r0, [r0] + bl sub_808E894 + 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 _0808E8D0 +_0808E8EA: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808E8C0 + + thumb_func_start sub_808E8F4 +@ u8 sub_808E8F4(struct TaggedObjectPalette *taggedPalette) +sub_808E8F4: @ 808E8F4 + push {r4,lr} + adds r4, r0, 0 + ldrh r0, [r4, 0x4] + bl IndexOfObjectPaletteTag + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + bne _0808E912 + adds r0, r4, 0 + bl LoadTaggedObjectPalette + lsls r0, 24 + lsrs r0, 24 + b _0808E914 +_0808E912: + movs r0, 0xFF +_0808E914: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_808E8F4 + + thumb_func_start pal_patch_for_npc +@ void pal_patch_for_npc(u16 tag, u8 slot) +pal_patch_for_npc: @ 808E91C + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r4, 24 + lsrs r4, 24 + bl FindFieldObjectPaletteIndexByTag + lsls r0, 24 + ldr r1, =gUnknown_0850BBC8 + lsrs r0, 21 + adds r0, r1 + ldr r0, [r0] + lsls r4, 20 + movs r1, 0x80 + lsls r1, 17 + adds r4, r1 + lsrs r4, 16 + adds r1, r4, 0 + movs r2, 0x20 + bl gpu_pal_apply + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end pal_patch_for_npc + + thumb_func_start pal_patch_for_npc_range +@ void pal_patch_for_npc_range(u16 *tags, u8 minSlot, u8 maxSlot) +pal_patch_for_npc_range: @ 808E954 + 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 _0808E978 +_0808E964: + 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 _0808E964 +_0808E978: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end pal_patch_for_npc_range + + thumb_func_start FindFieldObjectPaletteIndexByTag +@ u8 FindFieldObjectPaletteIndexByTag(u16 tag) +FindFieldObjectPaletteIndexByTag: @ 808E980 + push {r4-r6,lr} + lsls r0, 16 + lsrs r5, r0, 16 + movs r2, 0 + ldr r0, =gUnknown_0850BBC8 + ldrh r1, [r0, 0x4] + ldr r3, =0x000011ff + adds r4, r0, 0 + cmp r1, r3 + beq _0808E9C0 + adds r6, r4, 0 + adds r1, r3, 0 +_0808E998: + lsls r0, r2, 3 + adds r0, r6 + ldrh r0, [r0, 0x4] + cmp r0, r5 + bne _0808E9B0 + adds r0, r2, 0 + b _0808E9C2 + .pool +_0808E9B0: + 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 _0808E998 +_0808E9C0: + movs r0, 0xFF +_0808E9C2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end FindFieldObjectPaletteIndexByTag + + thumb_func_start npc_load_two_palettes__no_record +@ void npc_load_two_palettes__no_record(u16 tag, u8 slot) +npc_load_two_palettes__no_record: @ 808E9C8 + 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, =gUnknown_0850BD00 + ldrh r0, [r1] + ldr r2, =0x000011ff + cmp r0, r2 + beq _0808EA30 + ldr r0, =gUnknown_084975C4 + adds r5, r0 + adds r6, r2, 0 +_0808E9EC: + lsls r2, r3, 3 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r4 + bne _0808EA20 + adds r1, 0x4 + adds r1, r2, r1 + ldr r0, =0x020375b4 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + ldrb r1, [r5] + bl pal_patch_for_npc + b _0808EA30 + .pool +_0808EA20: + 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 _0808E9EC +_0808EA30: + 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 +@ void npc_load_two_palettes__and_record(u16 tag, u8 slot) +npc_load_two_palettes__and_record: @ 808EA38 + push {r4-r6,lr} + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 24 + lsrs r5, r1, 24 + ldr r0, =0x020375b6 + strh r4, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl pal_patch_for_npc + movs r3, 0 + ldr r1, =gUnknown_0850BD78 + ldrh r0, [r1] + ldr r2, =0x000011ff + cmp r0, r2 + beq _0808EAA8 + ldr r0, =gUnknown_084975C4 + adds r5, r0 + adds r6, r2, 0 +_0808EA60: + lsls r2, r3, 3 + adds r0, r2, r1 + ldrh r0, [r0] + cmp r0, r4 + bne _0808EA98 + adds r1, 0x4 + adds r1, r2, r1 + ldr r0, =0x020375b4 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 1 + adds r0, r1 + ldrh r0, [r0] + ldrb r1, [r5] + bl pal_patch_for_npc + b _0808EAA8 + .pool +_0808EA98: + 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 _0808EA60 +_0808EAA8: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end npc_load_two_palettes__and_record + + thumb_func_start sub_808EAB0 +sub_808EAB0: @ 808EAB0 + push {lr} + lsls r0, 16 + lsrs r0, 16 + lsls r1, 24 + lsrs r1, 24 + bl pal_patch_for_npc + pop {r0} + bx r0 + thumb_func_end sub_808EAB0 + + thumb_func_start sub_808EAC4 +sub_808EAC4: @ 808EAC4 + 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 sub_808EAC4 + + thumb_func_start npc_coords_shift +@ void npc_coords_shift(struct npc_state *fieldObject, u16 x, u16 y) +npc_coords_shift: @ 808EAE4 + 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 +@ void npc_coords_set(struct npc_state *fieldObject, u16 x, u16 y) +npc_coords_set: @ 808EAF4 + 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_808EB08 +sub_808EB08: @ 808EB08 + 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, =0x02020630 + adds r7, r0, r1 + ldrb r0, [r6, 0x5] + bl GetFieldObjectGraphicsInfo + 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_8093038 + 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_808E38C + ldrb r0, [r6, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _0808EB9A + bl CameraObjectReset1 +_0808EB9A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808EB08 + + thumb_func_start sub_808EBA8 +sub_808EBA8: @ 808EBA8 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808EBF0 + 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, =0x02037350 + adds r0, r3 + movs r3, 0xE0 + lsls r3, 11 + adds r1, r3 + asrs r1, 16 + adds r2, r3 + asrs r2, 16 + bl sub_808EB08 +_0808EBF0: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808EBA8 + + thumb_func_start npc_coords_shift_still +@ void npc_coords_shift_still(struct npc_state *fieldObject) +npc_coords_shift_still: @ 808EBFC + 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 UpdateFieldObjectCoordsForCameraUpdate +@ void UpdateFieldObjectCoordsForCameraUpdate() +UpdateFieldObjectCoordsForCameraUpdate: @ 808EC10 + push {r4,r5,lr} + ldr r2, =0x02037334 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0808EC68 + movs r3, 0 + ldr r5, =0x02037350 + movs r0, 0x4 + ldrsh r4, [r2, r0] + movs r0, 0x8 + ldrsh r1, [r2, r0] +_0808EC2A: + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + adds r2, r0, r5 + ldrb r0, [r2] + lsls r0, 31 + cmp r0, 0 + beq _0808EC5E + 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] +_0808EC5E: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0xF + bls _0808EC2A +_0808EC68: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end UpdateFieldObjectCoordsForCameraUpdate + + thumb_func_start GetFieldObjectIdByXYZ +@ u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z) +GetFieldObjectIdByXYZ: @ 808EC78 + 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, =0x02037350 + mov r8, r0 +_0808EC90: + 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 _0808ECC8 + movs r2, 0x10 + ldrsh r0, [r1, r2] + cmp r0, r7 + bne _0808ECC8 + movs r2, 0x12 + ldrsh r0, [r1, r2] + cmp r0, r6 + bne _0808ECC8 + adds r0, r1, 0 + adds r1, r5, 0 + bl FieldObjectDoesZCoordMatch + lsls r0, 24 + cmp r0, 0 + beq _0808ECC8 + adds r0, r4, 0 + b _0808ECD4 + .pool +_0808ECC8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _0808EC90 + movs r0, 0x10 +_0808ECD4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end GetFieldObjectIdByXYZ + + thumb_func_start FieldObjectDoesZCoordMatch +@ bool8 FieldObjectDoesZCoordMatch(struct npc_state *fieldObject) +FieldObjectDoesZCoordMatch: @ 808ECE0 + push {lr} + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r0, 0xB] + movs r0, 0xF + ands r0, r2 + cmp r0, 0 + beq _0808ED00 + cmp r1, 0 + beq _0808ED00 + lsls r0, r2, 28 + lsrs r0, 28 + cmp r0, r1 + beq _0808ED00 + movs r0, 0 + b _0808ED02 +_0808ED00: + movs r0, 0x1 +_0808ED02: + pop {r1} + bx r1 + thumb_func_end FieldObjectDoesZCoordMatch + + thumb_func_start UpdateFieldObjectsForCameraUpdate +@ void UpdateFieldObjectsForCameraUpdate(u16 movingCameraOffsetX, u16 movingCameraOffsetY) +UpdateFieldObjectsForCameraUpdate: @ 808ED08 + 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 UpdateFieldObjectCoordsForCameraUpdate + lsls r4, 16 + asrs r4, 16 + lsls r5, 16 + asrs r5, 16 + adds r0, r4, 0 + adds r1, r5, 0 + bl SpawnFieldObjectsInView + bl RemoveFieldObjectsOutsideView + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end UpdateFieldObjectsForCameraUpdate + + thumb_func_start AddCameraObject +@ u8 AddCameraObject(u8 followedObjectId) +AddCameraObject: @ 808ED34 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r0, =gUnknown_084975D4 + movs r1, 0 + movs r2, 0 + movs r3, 0x4 + bl AddObjectToFront + lsls r0, 24 + lsrs r0, 24 + ldr r2, =0x02020630 + 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 + .pool + thumb_func_end AddCameraObject + + thumb_func_start ObjectCB_CameraObject +@ void ObjectCB_CameraObject(struct obj *object) +ObjectCB_CameraObject: @ 808ED78 + push {r4,r5,lr} + sub sp, 0xC + mov r2, sp + ldr r1, =gUnknown_084975EC + 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 + .pool + thumb_func_end ObjectCB_CameraObject + + thumb_func_start CameraObject_0 +@ void CameraObject_0(struct obj *object) +CameraObject_0: @ 808EDA0 + push {lr} + ldr r3, =0x02020630 + 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 + .pool + thumb_func_end CameraObject_0 + + thumb_func_start CameraObject_1 +@ void CameraObject_1(struct obj *object) +CameraObject_1: @ 808EDDC + push {r4,r5,lr} + ldr r3, =0x02020630 + 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 + .pool + thumb_func_end CameraObject_1 + + thumb_func_start CameraObject_2 +@ void CameraObject_2(struct obj *object) +CameraObject_2: @ 808EE14 + push {r4,lr} + ldr r4, =0x02020630 + 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 + .pool + thumb_func_end CameraObject_2 + + thumb_func_start FindCameraObject +@ struct obj *FindCameraObject() +FindCameraObject: @ 808EE44 + push {r4,r5,lr} + movs r3, 0 + ldr r4, =0x02020630 + adds r5, r4, 0 + adds r5, 0x1C +_0808EE4E: + 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 _0808EE78 + adds r0, r1, r5 + ldr r1, [r0] + ldr r0, =ObjectCB_CameraObject + cmp r1, r0 + bne _0808EE78 + adds r0, r2, 0 + b _0808EE84 + .pool +_0808EE78: + adds r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + cmp r3, 0x3F + bls _0808EE4E + movs r0, 0 +_0808EE84: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end FindCameraObject + + thumb_func_start CameraObjectReset1 +@ void CameraObjectReset1() +CameraObjectReset1: @ 808EE8C + push {lr} + bl FindCameraObject + adds r2, r0, 0 + cmp r2, 0 + beq _0808EEA4 + movs r0, 0 + strh r0, [r2, 0x30] + ldr r1, [r2, 0x1C] + adds r0, r2, 0 + bl _call_via_r1 +_0808EEA4: + pop {r0} + bx r0 + thumb_func_end CameraObjectReset1 + + thumb_func_start CameraObjectSetFollowedObjectId +@ void CameraObjectSetFollowedObjectId(u8 objectId) +CameraObjectSetFollowedObjectId: @ 808EEA8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl FindCameraObject + cmp r0, 0 + beq _0808EEBC + strh r4, [r0, 0x2E] + bl CameraObjectReset1 +_0808EEBC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end CameraObjectSetFollowedObjectId + + thumb_func_start CameraObjectGetFollowedObjectId +@ u8 CameraObjectGetFollowedObjectId() +CameraObjectGetFollowedObjectId: @ 808EEC4 + push {lr} + bl FindCameraObject + cmp r0, 0 + beq _0808EED6 + ldrh r0, [r0, 0x2E] + lsls r0, 24 + lsrs r0, 24 + b _0808EED8 +_0808EED6: + movs r0, 0x40 +_0808EED8: + pop {r1} + bx r1 + thumb_func_end CameraObjectGetFollowedObjectId + + thumb_func_start CameraObjectReset2 +@ void CameraObjectReset2() +CameraObjectReset2: @ 808EEDC + push {lr} + bl FindCameraObject + movs r1, 0x2 + strh r1, [r0, 0x30] + pop {r0} + bx r0 + thumb_func_end CameraObjectReset2 + + thumb_func_start sub_808EEEC +sub_808EEEC: @ 808EEEC + 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, =0x02020630 +_0808EF06: + 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 _0808EF38 + 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 _0808EF42 + .pool +_0808EF38: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x3F + bls _0808EF06 +_0808EF42: + adds r0, r5, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808EEEC + + thumb_func_start obj_unfreeze +obj_unfreeze: @ 808EF50 + 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, =0x02020630 + movs r2, 0x1 + negs r2, r2 +_0808EF6E: + 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 _0808EFA8 + 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 _0808EFB6 + .pool +_0808EFA8: + subs r0, r1, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + asrs r0, 16 + cmp r0, r2 + bgt _0808EF6E + movs r0, 0x40 +_0808EFB6: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end obj_unfreeze + + thumb_func_start FieldObjectSetDirection +@ void FieldObjectSetDirection(struct npc_state *fieldObject, u8 direction) +FieldObjectSetDirection: @ 808EFC0 + 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 _0808EFF0 + 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] +_0808EFF0: + 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 FieldObjectSetDirection + + thumb_func_start GetFieldObjectScriptPointerByLocalIdAndMap +@ u32 GetFieldObjectScriptPointerByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId) +GetFieldObjectScriptPointerByLocalIdAndMap: @ 808F004 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + bl GetFieldObjectTemplateByLocalIdAndMap + ldr r0, [r0, 0x10] + pop {r1} + bx r1 + thumb_func_end GetFieldObjectScriptPointerByLocalIdAndMap + + thumb_func_start GetFieldObjectScriptPointerByFieldObjectId +@ u32 GetFieldObjectScriptPointerByFieldObjectId(u8 fieldObjectId) +GetFieldObjectScriptPointerByFieldObjectId: @ 808F01C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, =0x02037350 + 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 GetFieldObjectScriptPointerByLocalIdAndMap + pop {r1} + bx r1 + .pool + thumb_func_end GetFieldObjectScriptPointerByFieldObjectId + + thumb_func_start GetFieldObjectFlagIdByLocalIdAndMap +@ u16 GetFieldObjectFlagIdByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId) +GetFieldObjectFlagIdByLocalIdAndMap: @ 808F040 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + lsls r2, 24 + lsrs r2, 24 + bl GetFieldObjectTemplateByLocalIdAndMap + ldrh r0, [r0, 0x14] + pop {r1} + bx r1 + thumb_func_end GetFieldObjectFlagIdByLocalIdAndMap + + thumb_func_start GetFieldObjectFlagIdByFieldObjectId +@ u16 GetFieldObjectFlagIdByFieldObjectId(u8 fieldObjectId) +GetFieldObjectFlagIdByFieldObjectId: @ 808F058 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, =0x02037350 + 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 GetFieldObjectFlagIdByLocalIdAndMap + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .pool + thumb_func_end GetFieldObjectFlagIdByFieldObjectId + + thumb_func_start sub_808F080 +sub_808F080: @ 808F080 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808F0B4 + ldr r2, =0x02037350 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x7] + b _0808F0B6 + .pool +_0808F0B4: + movs r0, 0xFF +_0808F0B6: + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_808F080 + + thumb_func_start sub_808F0BC +sub_808F0BC: @ 808F0BC + lsls r0, 24 + lsrs r0, 24 + ldr r2, =0x02037350 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x7] + bx lr + .pool + thumb_func_end sub_808F0BC + + thumb_func_start sub_808F0D4 +sub_808F0D4: @ 808F0D4 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808F108 + ldr r2, =0x02037350 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1D] + b _0808F10A + .pool +_0808F108: + movs r0, 0xFF +_0808F10A: + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_808F0D4 + + thumb_func_start FieldObjectGetBerryTreeId +@ u8 FieldObjectGetBerryTreeId(u8 fieldObjectId) +FieldObjectGetBerryTreeId: @ 808F110 + lsls r0, 24 + lsrs r0, 24 + ldr r2, =0x02037350 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + ldrb r0, [r1, 0x1D] + bx lr + .pool + thumb_func_end FieldObjectGetBerryTreeId + + thumb_func_start GetFieldObjectTemplateByLocalIdAndMap +@ struct FieldObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8 localId, u8 mapId, u8 mapGroupId) +GetFieldObjectTemplateByLocalIdAndMap: @ 808F128 + 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, =0x03005d8c + ldr r1, [r0] + movs r0, 0x5 + ldrsb r0, [r1, r0] + cmp r0, r3 + bne _0808F160 + movs r0, 0x4 + ldrsb r0, [r1, r0] + cmp r0, r2 + bne _0808F160 + movs r0, 0xC7 + lsls r0, 4 + adds r1, r0 + ldr r0, =0x02037318 + ldr r0, [r0, 0x4] + b _0808F16C + .pool +_0808F160: + adds r0, r2, 0 + adds r1, r3, 0 + bl get_mapheader_by_bank_and_number + ldr r0, [r0, 0x4] + ldr r1, [r0, 0x4] +_0808F16C: + ldrb r2, [r0] + adds r0, r4, 0 + bl FindFieldObjectTemplateInArrayByLocalId + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetFieldObjectTemplateByLocalIdAndMap + + thumb_func_start FindFieldObjectTemplateInArrayByLocalId +@ struct FieldObjectTemplate *FindFieldObjectTemplateInArrayByLocalId(u8 localId, struct FieldObjectTemplate *templates, u8 numTemplates) +FindFieldObjectTemplateInArrayByLocalId: @ 808F17C + 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 _0808F1AA +_0808F18E: + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 3 + adds r3, r0, r5 + ldrb r0, [r3] + cmp r0, r4 + bne _0808F1A0 + adds r0, r3, 0 + b _0808F1AC +_0808F1A0: + adds r0, r1, 0x1 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, r2 + bcc _0808F18E +_0808F1AA: + movs r0, 0 +_0808F1AC: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end FindFieldObjectTemplateInArrayByLocalId + + thumb_func_start sub_808F1B4 +@ int sub_808F1B4(struct npc_state *fieldObject) +sub_808F1B4: @ 808F1B4 + push {r4,r5,lr} + adds r3, r0, 0 + ldrb r0, [r3, 0x9] + ldr r1, =0x03005d8c + ldr r2, [r1] + movs r1, 0x5 + ldrsb r1, [r2, r1] + cmp r0, r1 + bne _0808F200 + ldrb r1, [r3, 0xA] + movs r0, 0x4 + ldrsb r0, [r2, r0] + cmp r1, r0 + beq _0808F1E2 + b _0808F200 + .pool +_0808F1D8: + movs r1, 0xC7 + lsls r1, 4 + adds r0, r1 + adds r0, r4, r0 + b _0808F202 +_0808F1E2: + movs r1, 0 + adds r4, r2, 0 + ldrb r3, [r3, 0x8] + movs r5, 0xC7 + lsls r5, 4 + adds r2, r4, r5 + movs r0, 0 +_0808F1F0: + ldrb r5, [r2] + cmp r3, r5 + beq _0808F1D8 + adds r2, 0x18 + adds r0, 0x18 + adds r1, 0x1 + cmp r1, 0x3F + ble _0808F1F0 +_0808F200: + movs r0, 0 +_0808F202: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808F1B4 + + thumb_func_start sub_808F208 +@ void sub_808F208(struct npc_state *fieldObject) +sub_808F208: @ 808F208 + push {r4,lr} + adds r4, r0, 0 + bl sub_808F1B4 + adds r1, r0, 0 + cmp r1, 0 + beq _0808F222 + ldrh r0, [r4, 0x10] + subs r0, 0x7 + strh r0, [r1, 0x4] + ldrh r0, [r4, 0x12] + subs r0, 0x7 + strh r0, [r1, 0x6] +_0808F222: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_808F208 + + thumb_func_start sub_808F228 +sub_808F228: @ 808F228 + push {r4,lr} + adds r4, r1, 0 + bl sub_808F1B4 + cmp r0, 0 + beq _0808F236 + str r4, [r0, 0x10] +_0808F236: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_808F228 + + thumb_func_start sub_808F23C +sub_808F23C: @ 808F23C + push {r4,lr} + lsls r1, 24 + lsrs r4, r1, 24 + bl sub_808F1B4 + cmp r0, 0 + beq _0808F24C + strb r4, [r0, 0x9] +_0808F24C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_808F23C + + thumb_func_start sub_808F254 +@ void sub_808F254(u8 localId, u8 mapId, u8 mapGroupId) +sub_808F254: @ 808F254 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808F282 + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + bl sub_808F208 +_0808F282: + add sp, 0x4 + pop {r0} + bx r0 + .pool + thumb_func_end sub_808F254 + + thumb_func_start sub_808F28C +sub_808F28C: @ 808F28C + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _0808F2E8 + cmp r4, 0x6 + beq _0808F2B6 + cmp r4, 0x7 + beq _0808F2D4 + b _0808F2E8 +_0808F2B6: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + ldr r1, =gUnknown_082766A2 + bl sub_808F228 + b _0808F2E8 + .pool +_0808F2D4: + mov r0, sp + ldrb r1, [r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + ldr r1, =gUnknown_082766A6 + bl sub_808F228 +_0808F2E8: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808F28C + + thumb_func_start npc_paltag_set_load +npc_paltag_set_load: @ 808F2F8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl gpu_pal_allocator_reset__manage_upper_four + ldr r1, =0x020375b6 + ldr r2, =0x000011ff + adds r0, r2, 0 + strh r0, [r1] + ldr r2, =0x020375b4 + strb r4, [r2] + cmp r4, 0x1 + bne _0808F344 + ldr r1, =gUnknown_0850BE38 + 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, =0x0300301c + movs r0, 0x8 + strb r0, [r1] + b _0808F356 + .pool +_0808F344: + ldr r0, =gUnknown_0850BE38 + ldrb r1, [r2] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + movs r1, 0 + movs r2, 0xA + bl pal_patch_for_npc_range +_0808F356: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end npc_paltag_set_load + + thumb_func_start npc_paltag_by_palslot +npc_paltag_by_palslot: @ 808F360 + push {r4-r6,lr} + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x9 + bhi _0808F39C + ldr r1, =gUnknown_0850BE38 + ldr r0, =0x020375b4 + ldrb r0, [r0] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r0, r2, 1 + b _0808F390 + .pool +_0808F384: + adds r1, r4, 0x4 + adds r1, r2, r1 + ldr r0, =0x020375b4 + ldrb r0, [r0] + ldr r1, [r1] + lsls r0, 1 +_0808F390: + adds r0, r1 + ldrh r0, [r0] + b _0808F3CE + .pool +_0808F39C: + movs r3, 0 + ldr r0, =gUnknown_0850BD78 + ldrh r1, [r0] + ldr r2, =0x000011ff + adds r4, r0, 0 + cmp r1, r2 + beq _0808F3CC + adds r6, r4, 0 + ldr r0, =0x020375b6 + ldrh r1, [r0] + adds r5, r2, 0 +_0808F3B2: + lsls r2, r3, 3 + adds r0, r2, r6 + ldrh r0, [r0] + cmp r0, r1 + beq _0808F384 + 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 _0808F3B2 +_0808F3CC: + ldr r0, =0x000011ff +_0808F3CE: + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end npc_paltag_by_palslot + + thumb_func_start FieldObjectCB_NoMovement1 +FieldObjectCB_NoMovement1: @ 808F3E0 + 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, =0x02037350 + adds r0, r2 + ldr r2, =FieldObjectCB2_NoMovement1 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_NoMovement1 + + thumb_func_start FieldObjectCB2_NoMovement1 +FieldObjectCB2_NoMovement1: @ 808F404 + movs r0, 0 + bx lr + thumb_func_end FieldObjectCB2_NoMovement1 + + thumb_func_start FieldObjectCB_GoRandomDirections +FieldObjectCB_GoRandomDirections: @ 808F408 + 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, =0x02037350 + adds r0, r2 + ldr r2, =FieldObjectCB2_GoRandomDirections + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoRandomDirections + + thumb_func_start FieldObjectCB2_GoRandomDirections +FieldObjectCB2_GoRandomDirections: @ 808F42C + push {r4,lr} + ldr r3, =gUnknown_0850D6F4 + 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 + .pool + thumb_func_end FieldObjectCB2_GoRandomDirections + + thumb_func_start sub_808F44C +sub_808F44C: @ 808F44C + 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_808F44C + + thumb_func_start sub_808F460 +sub_808F460: @ 808F460 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808F460 + + thumb_func_start sub_808F48C +sub_808F48C: @ 808F48C + push {r4-r6,lr} + adds r6, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0808F4C0 + ldr r5, =gUnknown_0850D6DC + bl GenerateRandomNumber + 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 sub_8097978 + strh r4, [r6, 0x30] + movs r0, 0x1 + b _0808F4C2 + .pool +_0808F4C0: + movs r0, 0 +_0808F4C2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_808F48C + + thumb_func_start sub_808F4C8 +sub_808F4C8: @ 808F4C8 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _0808F4DC + movs r0, 0 + b _0808F4E2 +_0808F4DC: + movs r0, 0x4 + strh r0, [r4, 0x30] + movs r0, 0x1 +_0808F4E2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_808F4C8 + + thumb_func_start sub_808F4E8 +sub_808F4E8: @ 808F4E8 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, =gUnknown_0850D710 + mov r0, sp + movs r2, 0x4 + bl memcpy + bl GenerateRandomNumber + 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 FieldObjectSetDirection + movs r0, 0x5 + strh r0, [r6, 0x30] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8092B88 + lsls r0, 24 + cmp r0, 0 + beq _0808F526 + movs r0, 0x1 + strh r0, [r6, 0x30] +_0808F526: + movs r0, 0x1 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end sub_808F4E8 + + thumb_func_start sub_808F534 +sub_808F534: @ 808F534 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetGoSpeed0AnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + 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_808F534 + + thumb_func_start sub_808F564 +sub_808F564: @ 808F564 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0808F582 + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_0808F582: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808F564 + + thumb_func_start FieldObjectIsTrainerAndCloseToPlayer +@ bool8 FieldObjectIsTrainerAndCloseToPlayer(struct npc_state *fieldObject) +FieldObjectIsTrainerAndCloseToPlayer: @ 808F58C + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r0, 0x80 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _0808F5F8 + ldrb r0, [r5, 0x7] + cmp r0, 0x1 + beq _0808F5A8 + cmp r0, 0x3 + bne _0808F5F8 +_0808F5A8: + 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 _0808F5F8 + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, r4 + blt _0808F5F8 + lsls r0, r5, 16 + asrs r0, 16 + movs r2, 0 + ldrsh r1, [r7, r2] + cmp r0, r1 + bgt _0808F5F8 + lsls r0, r6, 16 + asrs r0, 16 + cmp r0, r1 + bge _0808F5FC +_0808F5F8: + movs r0, 0 + b _0808F5FE +_0808F5FC: + movs r0, 0x1 +_0808F5FE: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end FieldObjectIsTrainerAndCloseToPlayer + + thumb_func_start sub_808F608 +sub_808F608: @ 808F608 + 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 _0808F626 + movs r2, 0x4 + lsls r0, r4, 16 + cmp r0, 0 + bge _0808F630 + movs r2, 0x3 + b _0808F630 +_0808F626: + movs r2, 0x1 + lsls r0, 16 + cmp r0, 0 + bge _0808F630 + movs r2, 0x2 +_0808F630: + adds r0, r2, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_808F608 + + thumb_func_start sub_808F638 +sub_808F638: @ 808F638 + push {lr} + movs r0, 0x1 + lsls r1, 16 + cmp r1, 0 + bge _0808F644 + movs r0, 0x2 +_0808F644: + pop {r1} + bx r1 + thumb_func_end sub_808F638 + + thumb_func_start sub_808F648 +sub_808F648: @ 808F648 + push {lr} + movs r1, 0x4 + lsls r0, 16 + cmp r0, 0 + bge _0808F654 + movs r1, 0x3 +_0808F654: + adds r0, r1, 0 + pop {r1} + bx r1 + thumb_func_end sub_808F648 + + thumb_func_start sub_808F65C +sub_808F65C: @ 808F65C + 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 sub_808F608 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808F698 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_808F648 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _0808F6B2 + b _0808F6B0 +_0808F698: + cmp r0, 0x4 + bne _0808F6B2 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_808F638 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808F6B2 +_0808F6B0: + movs r0, 0x2 +_0808F6B2: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808F65C + + thumb_func_start sub_808F6B8 +sub_808F6B8: @ 808F6B8 + 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 sub_808F608 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808F6F4 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_808F648 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0808F70E + b _0808F70C +_0808F6F4: + cmp r0, 0x3 + bne _0808F70E + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_808F638 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808F70E +_0808F70C: + movs r0, 0x2 +_0808F70E: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808F6B8 + + thumb_func_start sub_808F714 +sub_808F714: @ 808F714 + 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 sub_808F608 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0808F750 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_808F648 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _0808F76A + b _0808F768 +_0808F750: + cmp r0, 0x4 + bne _0808F76A + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_808F638 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0808F76A +_0808F768: + movs r0, 0x1 +_0808F76A: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808F714 + + thumb_func_start sub_808F770 +sub_808F770: @ 808F770 + 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 sub_808F608 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0808F7AC + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_808F648 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0808F7C6 + b _0808F7C4 +_0808F7AC: + cmp r0, 0x3 + bne _0808F7C6 + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + adds r3, r7, 0 + bl sub_808F638 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0808F7C6 +_0808F7C4: + movs r0, 0x1 +_0808F7C6: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808F770 + + thumb_func_start sub_808F7CC +sub_808F7CC: @ 808F7CC + 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 sub_808F608 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bne _0808F802 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_808F638 + lsls r0, 24 + lsrs r0, 24 +_0808F802: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808F7CC + + thumb_func_start sub_808F808 +sub_808F808: @ 808F808 + 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 sub_808F608 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0808F83E + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_808F638 + lsls r0, 24 + lsrs r0, 24 +_0808F83E: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808F808 + + thumb_func_start sub_808F844 +sub_808F844: @ 808F844 + 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 sub_808F608 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808F87A + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_808F648 + lsls r0, 24 + lsrs r0, 24 +_0808F87A: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808F844 + + thumb_func_start sub_808F880 +sub_808F880: @ 808F880 + 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 sub_808F608 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0808F8B6 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + adds r3, r4, 0 + bl sub_808F648 + lsls r0, 24 + lsrs r0, 24 +_0808F8B6: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808F880 + + thumb_func_start sub_808F8BC +sub_808F8BC: @ 808F8BC + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + lsls r1, 24 + lsrs r6, r1, 24 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + bne _0808F8D4 + movs r0, 0 + b _0808F938 +_0808F8D4: + 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 _0808F908 + negs r0, r0 + lsls r0, 16 + lsrs r2, r0, 16 +_0808F908: + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0 + bge _0808F916 + negs r0, r0 + lsls r0, 16 + lsrs r3, r0, 16 +_0808F916: + ldr r0, =gUnknown_0850D714 + 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 +_0808F938: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end sub_808F8BC + + thumb_func_start FieldObjectCB_LookRandomDirections +FieldObjectCB_LookRandomDirections: @ 808F944 + 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, =0x02037350 + adds r0, r2 + ldr r2, =FieldObjectCB2_LookRandomDirections + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_LookRandomDirections + + thumb_func_start FieldObjectCB2_LookRandomDirections +@ bool8 FieldObjectCB2_LookRandomDirections(struct npc_state *fieldObject, struct obj *object) +FieldObjectCB2_LookRandomDirections: @ 808F968 + push {r4,lr} + ldr r3, =gUnknown_0850D740 + 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 + .pool + thumb_func_end FieldObjectCB2_LookRandomDirections + + thumb_func_start sub_808F988 +@ bool8 sub_808F988(struct npc_state *fieldObject, struct obj *object) +sub_808F988: @ 808F988 + 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_808F988 + + thumb_func_start sub_808F99C +@ bool8 sub_808F99C(struct npc_state *fieldObject, struct obj *object) +sub_808F99C: @ 808F99C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808F99C + + thumb_func_start sub_808F9C8 +@ bool8 sub_808F9C8(struct npc_state *fieldObject, struct obj *object) +sub_808F9C8: @ 808F9C8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0808F9FE + ldr r4, =gUnknown_0850D6DC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0808F9FE: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_808F9C8 + + thumb_func_start sub_808FA0C +@ bool8 sub_808FA0C(struct npc_state *fieldObject, struct obj *object) +sub_808FA0C: @ 808FA0C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _0808FA2A + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _0808FA32 +_0808FA2A: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _0808FA34 +_0808FA32: + movs r0, 0 +_0808FA34: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808FA0C + + thumb_func_start sub_808FA3C +@ bool8 sub_808FA3C(struct npc_state *fieldObject, struct obj *object) +sub_808FA3C: @ 808FA3C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D710 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _0808FA6C + bl GenerateRandomNumber + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_0808FA6C: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_808FA3C + + thumb_func_start FieldObjectCB_RandomlyGoNorthOrSouth +FieldObjectCB_RandomlyGoNorthOrSouth: @ 808FA84 + 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, =0x02037350 + adds r0, r2 + ldr r2, =FieldObjectCB2_RandomlyGoNorthOrSouth + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyGoNorthOrSouth + + thumb_func_start FieldObjectCB2_RandomlyGoNorthOrSouth +FieldObjectCB2_RandomlyGoNorthOrSouth: @ 808FAA8 + push {r4,lr} + ldr r3, =gUnknown_0850D754 + 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 + .pool + thumb_func_end FieldObjectCB2_RandomlyGoNorthOrSouth + + thumb_func_start sub_808FAC8 +sub_808FAC8: @ 808FAC8 + 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_808FAC8 + + thumb_func_start sub_808FADC +sub_808FADC: @ 808FADC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808FADC + + thumb_func_start sub_808FB08 +@ bool8 sub_808FB08(struct npc_state *fieldObject, struct obj *object) +sub_808FB08: @ 808FB08 + push {r4-r6,lr} + adds r6, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0808FB3C + ldr r5, =gUnknown_0850D6DC + bl GenerateRandomNumber + 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 sub_8097978 + strh r4, [r6, 0x30] + movs r0, 0x1 + b _0808FB3E + .pool +_0808FB3C: + movs r0, 0 +_0808FB3E: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_808FB08 + + thumb_func_start sub_808FB44 +@ bool8 sub_808FB44(struct npc_state *fieldObject, struct obj *object) +sub_808FB44: @ 808FB44 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _0808FB58 + movs r0, 0 + b _0808FB5E +_0808FB58: + movs r0, 0x4 + strh r0, [r4, 0x30] + movs r0, 0x1 +_0808FB5E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_808FB44 + + thumb_func_start sub_808FB64 +@ bool8 sub_808FB64(struct npc_state *fieldObject, struct obj *object) +sub_808FB64: @ 808FB64 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, =gUnknown_0850D770 + mov r0, sp + movs r2, 0x2 + bl memcpy + bl GenerateRandomNumber + 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 FieldObjectSetDirection + movs r0, 0x5 + strh r0, [r6, 0x30] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8092B88 + lsls r0, 24 + cmp r0, 0 + beq _0808FBA2 + strh r7, [r6, 0x30] +_0808FBA2: + movs r0, 0x1 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_808FB64 + + thumb_func_start sub_808FBB0 +sub_808FBB0: @ 808FBB0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetGoSpeed0AnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + 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_808FBB0 + + thumb_func_start sub_808FBE0 +sub_808FBE0: @ 808FBE0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0808FBFE + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_0808FBFE: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808FBE0 + + thumb_func_start FieldObjectCB_RandomlyGoEastOrWest +FieldObjectCB_RandomlyGoEastOrWest: @ 808FC08 + 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, =0x02037350 + adds r0, r2 + ldr r2, =FieldObjectCB2_RandomlyGoEastOrWest + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyGoEastOrWest + + thumb_func_start FieldObjectCB2_RandomlyGoEastOrWest +FieldObjectCB2_RandomlyGoEastOrWest: @ 808FC2C + push {r4,lr} + ldr r3, =gUnknown_0850D774 + 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 + .pool + thumb_func_end FieldObjectCB2_RandomlyGoEastOrWest + + thumb_func_start sub_808FC4C +sub_808FC4C: @ 808FC4C + 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_808FC4C + + thumb_func_start sub_808FC60 +sub_808FC60: @ 808FC60 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808FC60 + + thumb_func_start sub_808FC8C +sub_808FC8C: @ 808FC8C + push {r4-r6,lr} + adds r6, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0808FCC0 + ldr r5, =gUnknown_0850D6DC + bl GenerateRandomNumber + 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 sub_8097978 + strh r4, [r6, 0x30] + movs r0, 0x1 + b _0808FCC2 + .pool +_0808FCC0: + movs r0, 0 +_0808FCC2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_808FC8C + + thumb_func_start sub_808FCC8 +sub_808FCC8: @ 808FCC8 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _0808FCDC + movs r0, 0 + b _0808FCE2 +_0808FCDC: + movs r0, 0x4 + strh r0, [r4, 0x30] + movs r0, 0x1 +_0808FCE2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_808FCC8 + + thumb_func_start sub_808FCE8 +sub_808FCE8: @ 808FCE8 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, =gUnknown_0850D790 + mov r0, sp + movs r2, 0x2 + bl memcpy + bl GenerateRandomNumber + 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 FieldObjectSetDirection + movs r0, 0x5 + strh r0, [r6, 0x30] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8092B88 + lsls r0, 24 + cmp r0, 0 + beq _0808FD26 + strh r7, [r6, 0x30] +_0808FD26: + movs r0, 0x1 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_808FCE8 + + thumb_func_start sub_808FD34 +sub_808FD34: @ 808FD34 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetGoSpeed0AnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + 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_808FD34 + + thumb_func_start sub_808FD64 +sub_808FD64: @ 808FD64 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0808FD82 + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_0808FD82: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808FD64 + + thumb_func_start FieldObjectCB_FaceFixedDirection +FieldObjectCB_FaceFixedDirection: @ 808FD8C + 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, =0x02037350 + adds r0, r2 + ldr r2, =FieldObjectCB2_FaceFixedDirection + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_FaceFixedDirection + + thumb_func_start FieldObjectCB2_FaceFixedDirection +@ bool8 FieldObjectCB2_FaceFixedDirection(struct npc_state *fieldObject, struct obj *object) +FieldObjectCB2_FaceFixedDirection: @ 808FDB0 + push {r4,lr} + ldr r3, =gUnknown_0850D794 + 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 + .pool + thumb_func_end FieldObjectCB2_FaceFixedDirection + + thumb_func_start sub_808FDD0 +@ bool8 sub_808FDD0(struct npc_state *fieldObject, struct obj *object) +sub_808FDD0: @ 808FDD0 + 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 GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_808FDD0 + + thumb_func_start sub_808FDFC +@ bool8 sub_808FDFC(struct npc_state *fieldObject, struct obj *object) +sub_808FDFC: @ 808FDFC + push {r4,lr} + adds r4, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + bne _0808FE0E + movs r0, 0 + b _0808FE14 +_0808FE0E: + movs r0, 0x2 + strh r0, [r4, 0x30] + movs r0, 0x1 +_0808FE14: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_808FDFC + + thumb_func_start sub_808FE1C +@ bool8 sub_808FE1C(struct npc_state *fieldObject, struct obj *object) +sub_808FE1C: @ 808FE1C + ldrb r2, [r0] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0 + bx lr + thumb_func_end sub_808FE1C + + thumb_func_start FieldObjectCB_BerryTree +FieldObjectCB_BerryTree: @ 808FE2C + push {r4,r5,lr} + adds r4, r0, 0 + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r5, r0, r1 + ldrh r1, [r4, 0x3C] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0808FE58 + adds r0, r5, 0 + adds r1, r4, 0 + bl get_berry_tree_graphics + ldrh r1, [r4, 0x3C] + movs r0, 0x1 + orrs r0, r1 + strh r0, [r4, 0x3C] +_0808FE58: + ldr r2, =FieldObjectCB2_BerryTree + adds r0, r5, 0 + adds r1, r4, 0 + bl FieldObjectStep + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_BerryTree + + thumb_func_start FieldObjectCB2_BerryTree +FieldObjectCB2_BerryTree: @ 808FE70 + push {r4,lr} + ldr r3, =gUnknown_0850D7A0 + 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 + .pool + thumb_func_end FieldObjectCB2_BerryTree + + thumb_func_start do_berry_tree_growth_sparkle_1 +@ bool8 do_berry_tree_growth_sparkle_1(struct npc_state *fieldObject, struct obj *object) +do_berry_tree_growth_sparkle_1: @ 808FE90 + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl npc_reset + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + adds r6, r5, 0 + adds r6, 0x3E + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + ldrb r0, [r4, 0x1D] + bl GetStageByBerryTreeId + lsls r0, 24 + lsrs r7, r0, 24 + cmp r7, 0 + bne _0808FF00 + ldrh r1, [r5, 0x3C] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _0808FEF6 + subs r6, 0x14 + ldrb r0, [r6] + cmp r0, 0x4 + bne _0808FEF6 + ldr r1, =0x02038c08 + movs r2, 0x10 + ldrsh r0, [r4, r2] + str r0, [r1] + movs r2, 0x12 + ldrsh r0, [r4, r2] + str r0, [r1, 0x4] + adds r0, r5, 0 + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 + str r0, [r1, 0x8] + ldrb r0, [r5, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r1, 0xC] + movs r0, 0x17 + bl FieldEffectStart + strb r7, [r6] +_0808FEF6: + movs r0, 0 + b _0808FF42 + .pool +_0808FF00: + ldrb r1, [r4, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x1] + ldrb r1, [r6] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + subs r0, r7, 0x1 + lsls r0, 24 + lsrs r7, r0, 24 + adds r0, r5, 0 + adds r0, 0x2A + ldrb r0, [r0] + cmp r0, r7 + bne _0808FF3C + adds r0, r4, 0 + adds r1, r5, 0 + bl get_berry_tree_graphics + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x39 + bl FieldObjectSetRegularAnim + movs r0, 0x1 + strh r0, [r5, 0x30] + b _0808FF42 +_0808FF3C: + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 +_0808FF42: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end do_berry_tree_growth_sparkle_1 + + thumb_func_start sub_808FF48 +@ bool8 sub_808FF48(struct npc_state *fieldObject, struct obj *object) +sub_808FF48: @ 808FF48 + push {r4,lr} + adds r4, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + bne _0808FF5A + movs r0, 0 + b _0808FF60 +_0808FF5A: + movs r0, 0 + strh r0, [r4, 0x30] + movs r0, 0x1 +_0808FF60: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_808FF48 + + thumb_func_start do_berry_tree_growth_sparkle_2 +@ bool8 do_berry_tree_growth_sparkle_2(struct npc_state *fieldObject, struct obj *object) +do_berry_tree_growth_sparkle_2: @ 808FF68 + push {r4,lr} + ldrb r2, [r0] + movs r3, 0x2 + orrs r2, r3 + strb r2, [r0] + movs r3, 0 + movs r2, 0x3 + strh r2, [r1, 0x30] + strh r3, [r1, 0x32] + ldrh r3, [r1, 0x3C] + movs r2, 0x2 + orrs r2, r3 + strh r2, [r1, 0x3C] + ldr r3, =0x02038c08 + movs r4, 0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r2, 0x12 + ldrsh r0, [r0, r2] + str r0, [r3, 0x4] + adds r0, r1, 0 + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 + str r0, [r3, 0x8] + ldrb r0, [r1, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r3, 0xC] + movs r0, 0x17 + bl FieldEffectStart + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end do_berry_tree_growth_sparkle_2 + + thumb_func_start sub_808FFB4 +@ bool8 sub_808FFB4(struct npc_state *fieldObject, struct obj *object) +sub_808FFB4: @ 808FFB4 + push {r4,lr} + adds r3, r0, 0 + adds r4, r1, 0 + ldrh r1, [r4, 0x32] + adds r1, 0x1 + strh r1, [r4, 0x32] + movs r0, 0x2 + ands r1, r0 + lsls r1, 16 + lsrs r1, 17 + lsls r1, 5 + ldrb r2, [r3, 0x1] + subs r0, 0x23 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x1] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x40 + bgt _0808FFEC + movs r0, 0 + b _0808FFFE +_0808FFEC: + adds r0, r3, 0 + adds r1, r4, 0 + bl get_berry_tree_graphics + movs r0, 0x4 + strh r0, [r4, 0x30] + movs r0, 0 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0808FFFE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_808FFB4 + + thumb_func_start sub_8090004 +@ bool8 sub_8090004(struct npc_state *fieldObject, struct obj *object) +sub_8090004: @ 8090004 + push {r4,lr} + adds r4, r1, 0 + ldrh r2, [r4, 0x32] + adds r2, 0x1 + strh r2, [r4, 0x32] + movs r1, 0x2 + ands r2, r1 + lsls r2, 16 + lsrs r2, 17 + lsls r2, 5 + ldrb r3, [r0, 0x1] + subs r1, 0x23 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x1] + adds r2, r4, 0 + adds r2, 0x2C + ldrb r0, [r2] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r2] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0x40 + bgt _0809003A + movs r0, 0 + b _08090048 +_0809003A: + movs r0, 0 + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x3C] + subs r0, 0x3 + ands r0, r1 + strh r0, [r4, 0x3C] + movs r0, 0x1 +_08090048: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8090004 + + thumb_func_start FieldObjectCB_RandomlyLookNorthOrSouth +FieldObjectCB_RandomlyLookNorthOrSouth: @ 8090050 + 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, =0x02037350 + adds r0, r2 + ldr r2, =FieldObjectCB2_RandomlyLookNorthOrSouth + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyLookNorthOrSouth + + thumb_func_start FieldObjectCB2_RandomlyLookNorthOrSouth +FieldObjectCB2_RandomlyLookNorthOrSouth: @ 8090074 + push {r4,lr} + ldr r3, =gUnknown_0850D7B4 + 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 + .pool + thumb_func_end FieldObjectCB2_RandomlyLookNorthOrSouth + + thumb_func_start sub_8090094 +sub_8090094: @ 8090094 + 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_8090094 + + thumb_func_start sub_80900A8 +sub_80900A8: @ 80900A8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80900A8 + + thumb_func_start sub_80900D4 +sub_80900D4: @ 80900D4 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0809010A + ldr r4, =gUnknown_0850D6DC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0809010A: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80900D4 + + thumb_func_start sub_8090118 +sub_8090118: @ 8090118 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _08090136 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _0809013E +_08090136: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08090140 +_0809013E: + movs r0, 0 +_08090140: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090118 + + thumb_func_start sub_8090148 +sub_8090148: @ 8090148 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D770 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x1 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08090178 + bl GenerateRandomNumber + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08090178: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090148 + + thumb_func_start FieldObjectCB_RandomlyLookEastOrWest +FieldObjectCB_RandomlyLookEastOrWest: @ 8090190 + 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, =0x02037350 + adds r0, r2 + ldr r2, =FieldObjectCB2_RandomlyLookEastOrWest + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyLookEastOrWest + + thumb_func_start FieldObjectCB2_RandomlyLookEastOrWest +FieldObjectCB2_RandomlyLookEastOrWest: @ 80901B4 + push {r4,lr} + ldr r3, =gUnknown_0850D7C8 + 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 + .pool + thumb_func_end FieldObjectCB2_RandomlyLookEastOrWest + + thumb_func_start sub_80901D4 +sub_80901D4: @ 80901D4 + 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_80901D4 + + thumb_func_start sub_80901E8 +sub_80901E8: @ 80901E8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80901E8 + + thumb_func_start sub_8090214 +sub_8090214: @ 8090214 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0809024A + ldr r4, =gUnknown_0850D6DC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0809024A: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090214 + + thumb_func_start sub_8090258 +sub_8090258: @ 8090258 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _08090276 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _0809027E +_08090276: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08090280 +_0809027E: + movs r0, 0 +_08090280: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090258 + + thumb_func_start sub_8090288 +sub_8090288: @ 8090288 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D790 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x2 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080902B8 + bl GenerateRandomNumber + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080902B8: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090288 + + thumb_func_start FieldObjectCB_RandomlyLookNorthOrWest +FieldObjectCB_RandomlyLookNorthOrWest: @ 80902D0 + 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, =0x02037350 + adds r0, r2 + ldr r2, =FieldObjectCB2_RandomlyLookNorthOrWest + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyLookNorthOrWest + + thumb_func_start FieldObjectCB2_RandomlyLookNorthOrWest +FieldObjectCB2_RandomlyLookNorthOrWest: @ 80902F4 + push {r4,lr} + ldr r3, =gUnknown_0850D7DC + 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 + .pool + thumb_func_end FieldObjectCB2_RandomlyLookNorthOrWest + + thumb_func_start sub_8090314 +sub_8090314: @ 8090314 + 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_8090314 + + thumb_func_start sub_8090328 +sub_8090328: @ 8090328 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090328 + + thumb_func_start sub_8090354 +sub_8090354: @ 8090354 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0809038A + ldr r4, =gUnknown_0850D6EC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0809038A: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090354 + + thumb_func_start sub_8090398 +sub_8090398: @ 8090398 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _080903B6 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _080903BE +_080903B6: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _080903C0 +_080903BE: + movs r0, 0 +_080903C0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090398 + + thumb_func_start sub_80903C8 +sub_80903C8: @ 80903C8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D7F0 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x3 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080903F8 + bl GenerateRandomNumber + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080903F8: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80903C8 + + thumb_func_start FieldObjectCB_RandomlyLookNorthOrEast +FieldObjectCB_RandomlyLookNorthOrEast: @ 8090410 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8090434 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyLookNorthOrEast + + thumb_func_start sub_8090434 +sub_8090434: @ 8090434 + push {r4,lr} + ldr r3, =gUnknown_0850D7F4 + 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 + .pool + thumb_func_end sub_8090434 + + thumb_func_start sub_8090454 +sub_8090454: @ 8090454 + 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_8090454 + + thumb_func_start sub_8090468 +sub_8090468: @ 8090468 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090468 + + thumb_func_start sub_8090494 +sub_8090494: @ 8090494 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _080904CA + ldr r4, =gUnknown_0850D6EC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_080904CA: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090494 + + thumb_func_start sub_80904D8 +sub_80904D8: @ 80904D8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _080904F6 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _080904FE +_080904F6: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08090500 +_080904FE: + movs r0, 0 +_08090500: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80904D8 + + thumb_func_start sub_8090508 +sub_8090508: @ 8090508 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D808 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x4 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08090538 + bl GenerateRandomNumber + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08090538: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090508 + + thumb_func_start FieldObjectCB_RandomlyLookSouthOrWest +FieldObjectCB_RandomlyLookSouthOrWest: @ 8090550 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8090574 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyLookSouthOrWest + + thumb_func_start sub_8090574 +sub_8090574: @ 8090574 + push {r4,lr} + ldr r3, =gUnknown_0850D80C + 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 + .pool + thumb_func_end sub_8090574 + + thumb_func_start sub_8090594 +sub_8090594: @ 8090594 + 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_8090594 + + thumb_func_start sub_80905A8 +sub_80905A8: @ 80905A8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80905A8 + + thumb_func_start sub_80905D4 +sub_80905D4: @ 80905D4 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0809060A + ldr r4, =gUnknown_0850D6EC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0809060A: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80905D4 + + thumb_func_start sub_8090618 +sub_8090618: @ 8090618 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _08090636 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _0809063E +_08090636: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08090640 +_0809063E: + movs r0, 0 +_08090640: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090618 + + thumb_func_start sub_8090648 +sub_8090648: @ 8090648 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D820 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x5 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08090678 + bl GenerateRandomNumber + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08090678: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090648 + + thumb_func_start FieldObjectCB_RandomlyLookSouthOrEast +FieldObjectCB_RandomlyLookSouthOrEast: @ 8090690 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80906B4 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyLookSouthOrEast + + thumb_func_start sub_80906B4 +sub_80906B4: @ 80906B4 + push {r4,lr} + ldr r3, =gUnknown_0850D824 + 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 + .pool + thumb_func_end sub_80906B4 + + thumb_func_start sub_80906D4 +sub_80906D4: @ 80906D4 + 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_80906D4 + + thumb_func_start sub_80906E8 +sub_80906E8: @ 80906E8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80906E8 + + thumb_func_start sub_8090714 +sub_8090714: @ 8090714 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0809074A + ldr r4, =gUnknown_0850D6EC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0809074A: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090714 + + thumb_func_start sub_8090758 +sub_8090758: @ 8090758 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _08090776 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _0809077E +_08090776: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08090780 +_0809077E: + movs r0, 0 +_08090780: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090758 + + thumb_func_start sub_8090788 +sub_8090788: @ 8090788 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D838 + mov r0, sp + movs r2, 0x2 + bl memcpy + adds r0, r4, 0 + movs r1, 0x6 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080907B8 + bl GenerateRandomNumber + movs r1, 0x1 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080907B8: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090788 + + thumb_func_start FieldObjectCB_RandomlyLookNorthOrSouthOrWest +FieldObjectCB_RandomlyLookNorthOrSouthOrWest: @ 80907D0 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80907F4 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyLookNorthOrSouthOrWest + + thumb_func_start sub_80907F4 +sub_80907F4: @ 80907F4 + push {r4,lr} + ldr r3, =gUnknown_0850D83C + 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 + .pool + thumb_func_end sub_80907F4 + + thumb_func_start sub_8090814 +sub_8090814: @ 8090814 + 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_8090814 + + thumb_func_start sub_8090828 +sub_8090828: @ 8090828 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090828 + + thumb_func_start sub_8090854 +sub_8090854: @ 8090854 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0809088A + ldr r4, =gUnknown_0850D6EC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_0809088A: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090854 + + thumb_func_start sub_8090898 +sub_8090898: @ 8090898 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _080908B6 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _080908BE +_080908B6: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _080908C0 +_080908BE: + movs r0, 0 +_080908C0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090898 + + thumb_func_start sub_80908C8 +sub_80908C8: @ 80908C8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D850 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0x7 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _080908F8 + bl GenerateRandomNumber + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_080908F8: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80908C8 + + thumb_func_start FieldObjectCB_RandomlyLookNorthOrSouthOrEast +FieldObjectCB_RandomlyLookNorthOrSouthOrEast: @ 8090910 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8090934 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyLookNorthOrSouthOrEast + + thumb_func_start sub_8090934 +sub_8090934: @ 8090934 + push {r4,lr} + ldr r3, =gUnknown_0850D854 + 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 + .pool + thumb_func_end sub_8090934 + + thumb_func_start sub_8090954 +sub_8090954: @ 8090954 + 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_8090954 + + thumb_func_start sub_8090968 +sub_8090968: @ 8090968 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090968 + + thumb_func_start sub_8090994 +sub_8090994: @ 8090994 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _080909CA + ldr r4, =gUnknown_0850D6EC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_080909CA: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090994 + + thumb_func_start sub_80909D8 +sub_80909D8: @ 80909D8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _080909F6 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _080909FE +_080909F6: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08090A00 +_080909FE: + movs r0, 0 +_08090A00: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80909D8 + + thumb_func_start sub_8090A08 +sub_8090A08: @ 8090A08 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D868 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0x8 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08090A38 + bl GenerateRandomNumber + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08090A38: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090A08 + + thumb_func_start FieldObjectCB_RandomlyLookNorthOrEastOrWest +FieldObjectCB_RandomlyLookNorthOrEastOrWest: @ 8090A50 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8090A74 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyLookNorthOrEastOrWest + + thumb_func_start sub_8090A74 +sub_8090A74: @ 8090A74 + push {r4,lr} + ldr r3, =gUnknown_0850D86C + 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 + .pool + thumb_func_end sub_8090A74 + + thumb_func_start sub_8090A94 +sub_8090A94: @ 8090A94 + 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_8090A94 + + thumb_func_start sub_8090AA8 +sub_8090AA8: @ 8090AA8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090AA8 + + thumb_func_start sub_8090AD4 +sub_8090AD4: @ 8090AD4 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _08090B0A + ldr r4, =gUnknown_0850D6EC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08090B0A: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090AD4 + + thumb_func_start sub_8090B18 +sub_8090B18: @ 8090B18 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _08090B36 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08090B3E +_08090B36: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08090B40 +_08090B3E: + movs r0, 0 +_08090B40: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090B18 + + thumb_func_start sub_8090B48 +sub_8090B48: @ 8090B48 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D880 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0x9 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08090B78 + bl GenerateRandomNumber + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08090B78: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090B48 + + thumb_func_start FieldObjectCB_RandomlyLookSouthOrEastOrWest +FieldObjectCB_RandomlyLookSouthOrEastOrWest: @ 8090B90 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8090BB4 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_RandomlyLookSouthOrEastOrWest + + thumb_func_start sub_8090BB4 +sub_8090BB4: @ 8090BB4 + push {r4,lr} + ldr r3, =gUnknown_0850D884 + 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 + .pool + thumb_func_end sub_8090BB4 + + thumb_func_start sub_8090BD4 +sub_8090BD4: @ 8090BD4 + 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_8090BD4 + + thumb_func_start sub_8090BE8 +sub_8090BE8: @ 8090BE8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090BE8 + + thumb_func_start sub_8090C14 +sub_8090C14: @ 8090C14 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _08090C4A + ldr r4, =gUnknown_0850D6EC + bl GenerateRandomNumber + 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 sub_8097978 + ldrb r1, [r6] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r6] + strh r5, [r7, 0x30] +_08090C4A: + movs r0, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090C14 + + thumb_func_start sub_8090C58 +sub_8090C58: @ 8090C58 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _08090C76 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08090C7E +_08090C76: + movs r0, 0x4 + strh r0, [r5, 0x30] + movs r0, 0x1 + b _08090C80 +_08090C7E: + movs r0, 0 +_08090C80: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090C58 + + thumb_func_start sub_8090C88 +sub_8090C88: @ 8090C88 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D898 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r4, 0 + movs r1, 0xA + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08090CB8 + bl GenerateRandomNumber + movs r1, 0x3 + ands r1, r0 + mov r2, sp + adds r0, r2, r1 + ldrb r1, [r0] +_08090CB8: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x1 + strh r0, [r5, 0x30] + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090C88 + + thumb_func_start FieldObjectCB_LookAroundCounterclockwise +FieldObjectCB_LookAroundCounterclockwise: @ 8090CD0 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8090CF4 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_LookAroundCounterclockwise + + thumb_func_start sub_8090CF4 +sub_8090CF4: @ 8090CF4 + push {r4,lr} + ldr r3, =gUnknown_0850D89C + 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 + .pool + thumb_func_end sub_8090CF4 + + thumb_func_start sub_8090D14 +sub_8090D14: @ 8090D14 + 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 GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090D14 + + thumb_func_start sub_8090D40 +sub_8090D40: @ 8090D40 + push {r4,lr} + adds r4, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _08090D5A + adds r0, r4, 0 + movs r1, 0x30 + bl sub_8097978 + movs r0, 0x2 + strh r0, [r4, 0x30] +_08090D5A: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8090D40 + + thumb_func_start sub_8090D64 +sub_8090D64: @ 8090D64 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _08090D82 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08090D86 +_08090D82: + movs r0, 0x3 + strh r0, [r5, 0x30] +_08090D86: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090D64 + + thumb_func_start sub_8090D90 +@ bool8 sub_8090D90(struct npc_state *fieldObject, struct obj *object) +sub_8090D90: @ 8090D90 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D8AC + mov r0, sp + movs r2, 0x5 + bl memcpy + adds r0, r4, 0 + movs r1, 0 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08090DBC + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + add r0, sp + ldrb r1, [r0] +_08090DBC: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0 + strh r0, [r5, 0x30] + movs r0, 0x1 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090D90 + + thumb_func_start FieldObjectCB_LookAroundClockwise +FieldObjectCB_LookAroundClockwise: @ 8090DD4 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8090DF8 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_LookAroundClockwise + + thumb_func_start sub_8090DF8 +sub_8090DF8: @ 8090DF8 + push {r4,lr} + ldr r3, =gUnknown_0850D8B4 + 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 + .pool + thumb_func_end sub_8090DF8 + + thumb_func_start sub_8090E18 +sub_8090E18: @ 8090E18 + 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 GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090E18 + + thumb_func_start sub_8090E44 +sub_8090E44: @ 8090E44 + push {r4,lr} + adds r4, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _08090E5E + adds r0, r4, 0 + movs r1, 0x30 + bl sub_8097978 + movs r0, 0x2 + strh r0, [r4, 0x30] +_08090E5E: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8090E44 + + thumb_func_start sub_8090E68 +sub_8090E68: @ 8090E68 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_809797C + lsls r0, 24 + cmp r0, 0 + bne _08090E86 + adds r0, r4, 0 + bl FieldObjectIsTrainerAndCloseToPlayer + lsls r0, 24 + cmp r0, 0 + beq _08090E8A +_08090E86: + movs r0, 0x3 + strh r0, [r5, 0x30] +_08090E8A: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8090E68 + + thumb_func_start sub_8090E94 +sub_8090E94: @ 8090E94 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D8C4 + mov r0, sp + movs r2, 0x5 + bl memcpy + adds r0, r4, 0 + movs r1, 0 + bl sub_808F8BC + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + bne _08090EC0 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + add r0, sp + ldrb r1, [r0] +_08090EC0: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0 + strh r0, [r5, 0x30] + movs r0, 0x1 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090E94 + + thumb_func_start FieldObjectCB_AlternatelyGoInOppositeDirections +FieldObjectCB_AlternatelyGoInOppositeDirections: @ 8090ED8 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8090EFC + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_AlternatelyGoInOppositeDirections + + thumb_func_start sub_8090EFC +sub_8090EFC: @ 8090EFC + push {r4,lr} + ldr r3, =gUnknown_0850D8CC + 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 + .pool + thumb_func_end sub_8090EFC + + thumb_func_start sub_8090F1C +sub_8090F1C: @ 8090F1C + 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_8090F1C + + thumb_func_start sub_8090F30 +@ bool8 sub_8090F30(struct npc_state *fieldObject, struct obj *object) +sub_8090F30: @ 8090F30 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, =gUnknown_085055CD + ldrb r1, [r4, 0x6] + adds r1, r0 + ldrb r1, [r1] + adds r0, r4, 0 + adds r0, 0x21 + ldrb r0, [r0] + cmp r0, 0 + beq _08090F52 + adds r0, r1, 0 + bl GetOppositeDirection + lsls r0, 24 + lsrs r1, r0, 24 +_08090F52: + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x2 + strh r0, [r5, 0x30] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8090F30 + + thumb_func_start sub_8090F68 +@ bool8 sub_8090F68(struct npc_state *fieldObject, struct obj *object) +sub_8090F68: @ 8090F68 + 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 _08090F98 + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bne _08090F98 + 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 FieldObjectSetDirection +_08090F98: + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_8092B88 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetGoSpeed0AnimId + lsls r0, 24 + lsrs r6, r0, 24 + cmp r5, 0x1 + bne _08090FEE + 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 FieldObjectSetDirection + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetGoSpeed0AnimId + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_8092B88 + lsls r0, 24 + lsrs r5, r0, 24 +_08090FEE: + cmp r5, 0 + beq _08091000 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetStepInPlaceDelay16AnimId + lsls r0, 24 + lsrs r6, r0, 24 +_08091000: + adds r0, r4, 0 + adds r1, r7, 0 + adds r2, r6, 0 + bl FieldObjectSetRegularAnim + 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_8090F68 + + thumb_func_start sub_8091020 +@ bool8 sub_8091020(struct npc_state *fieldObject, struct obj *object) +sub_8091020: @ 8091020 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0809103E + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_0809103E: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8091020 + + thumb_func_start sub_8091048 +@ bool8 sub_8091048(struct npc_state *fieldObject, struct obj *object) +sub_8091048: @ 8091048 + 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_8091048 + + thumb_func_start MoveFieldObjectInNextDirectionInSequence +@ bool8 MoveFieldObjectInNextDirectionInSequence(struct npc_state *fieldObject, struct obj *object, u8 *directions) +MoveFieldObjectInNextDirectionInSequence: @ 809105C + 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 _0809107E + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bne _0809107E + movs r0, 0 + strb r0, [r2] +_0809107E: + adds r5, r4, 0 + adds r5, 0x21 + ldrb r0, [r5] + adds r0, r7, r0 + ldrb r1, [r0] + adds r0, r4, 0 + bl FieldObjectSetDirection + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetGoSpeed0AnimId + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_8092B88 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080910D8 + ldrb r0, [r5] + adds r0, 0x1 + strb r0, [r5] + ldrb r0, [r5] + adds r0, r7, r0 + ldrb r1, [r0] + adds r0, r4, 0 + bl FieldObjectSetDirection + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetGoSpeed0AnimId + lsls r0, 24 + lsrs r6, r0, 24 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl sub_8092B88 + lsls r0, 24 + lsrs r0, 24 +_080910D8: + cmp r0, 0 + beq _080910EA + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetStepInPlaceDelay16AnimId + lsls r0, 24 + lsrs r6, r0, 24 +_080910EA: + adds r0, r4, 0 + mov r1, r8 + adds r2, r6, 0 + bl FieldObjectSetRegularAnim + 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 MoveFieldObjectInNextDirectionInSequence + + thumb_func_start sub_8091110 +@ bool8 sub_8091110(struct npc_state *fieldObject, struct obj *object) +sub_8091110: @ 8091110 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _0809112E + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_0809112E: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8091110 + + thumb_func_start FieldObjectCB_GoInDirectionSequence1 +FieldObjectCB_GoInDirectionSequence1: @ 8091138 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_809115C + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence1 + + thumb_func_start sub_809115C +sub_809115C: @ 809115C + push {r4,lr} + ldr r3, =gUnknown_0850D8DC + 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 + .pool + thumb_func_end sub_809115C + + thumb_func_start sub_809117C +sub_809117C: @ 809117C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D8E8 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080911A8 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080911A8 + movs r0, 0x3 + strb r0, [r2] +_080911A8: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_809117C + + thumb_func_start FieldObjectCB_GoInDirectionSequence2 +FieldObjectCB_GoInDirectionSequence2: @ 80911C4 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80911E8 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence2 + + thumb_func_start sub_80911E8 +sub_80911E8: @ 80911E8 + push {r4,lr} + ldr r3, =gUnknown_0850D8EC + 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 + .pool + thumb_func_end sub_80911E8 + + thumb_func_start sub_8091208 +sub_8091208: @ 8091208 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D8F8 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08091234 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091234 + movs r0, 0x2 + strb r0, [r2] +_08091234: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091208 + + thumb_func_start FieldObjectCB_GoInDirectionSequence3 +FieldObjectCB_GoInDirectionSequence3: @ 8091250 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091274 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence3 + + thumb_func_start sub_8091274 +sub_8091274: @ 8091274 + push {r4,lr} + ldr r3, =gUnknown_0850D8FC + 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 + .pool + thumb_func_end sub_8091274 + + thumb_func_start sub_8091294 +sub_8091294: @ 8091294 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D908 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _080912C0 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080912C0 + movs r0, 0x2 + strb r0, [r2] +_080912C0: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091294 + + thumb_func_start FieldObjectCB_GoInDirectionSequence4 +FieldObjectCB_GoInDirectionSequence4: @ 80912DC + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091300 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence4 + + thumb_func_start sub_8091300 +sub_8091300: @ 8091300 + push {r4,lr} + ldr r3, =gUnknown_0850D90C + 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 + .pool + thumb_func_end sub_8091300 + + thumb_func_start sub_8091320 +sub_8091320: @ 8091320 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D918 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _0809134C + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0809134C + movs r0, 0x3 + strb r0, [r2] +_0809134C: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091320 + + thumb_func_start FieldObjectCB_GoInDirectionSequence5 +FieldObjectCB_GoInDirectionSequence5: @ 8091368 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_809138C + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence5 + + thumb_func_start sub_809138C +sub_809138C: @ 809138C + push {r4,lr} + ldr r3, =gUnknown_0850D91C + 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 + .pool + thumb_func_end sub_809138C + + thumb_func_start sub_80913AC +@ bool8 sub_80913AC(struct npc_state *fieldObject, struct obj *object) +sub_80913AC: @ 80913AC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D928 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080913D8 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080913D8 + movs r0, 0x3 + strb r0, [r2] +_080913D8: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80913AC + + thumb_func_start FieldObjectCB_GoInDirectionSequence6 +FieldObjectCB_GoInDirectionSequence6: @ 80913F4 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091418 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence6 + + thumb_func_start sub_8091418 +sub_8091418: @ 8091418 + push {r4,lr} + ldr r3, =gUnknown_0850D92C + 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 + .pool + thumb_func_end sub_8091418 + + thumb_func_start sub_8091438 +sub_8091438: @ 8091438 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D938 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08091464 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091464 + movs r0, 0x2 + strb r0, [r2] +_08091464: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091438 + + thumb_func_start FieldObjectCB_GoInDirectionSequence7 +FieldObjectCB_GoInDirectionSequence7: @ 8091480 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80914A4 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence7 + + thumb_func_start sub_80914A4 +sub_80914A4: @ 80914A4 + push {r4,lr} + ldr r3, =gUnknown_0850D93C + 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 + .pool + thumb_func_end sub_80914A4 + + thumb_func_start sub_80914C4 +sub_80914C4: @ 80914C4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D710 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _080914F0 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080914F0 + movs r0, 0x2 + strb r0, [r2] +_080914F0: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80914C4 + + thumb_func_start FieldObjectCB_GoInDirectionSequence8 +FieldObjectCB_GoInDirectionSequence8: @ 809150C + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091530 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence8 + + thumb_func_start sub_8091530 +sub_8091530: @ 8091530 + push {r4,lr} + ldr r3, =gUnknown_0850D948 + 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 + .pool + thumb_func_end sub_8091530 + + thumb_func_start sub_8091550 +sub_8091550: @ 8091550 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D954 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _0809157C + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _0809157C + movs r0, 0x3 + strb r0, [r2] +_0809157C: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091550 + + thumb_func_start FieldObjectCB_GoInDirectionSequence9 +FieldObjectCB_GoInDirectionSequence9: @ 8091598 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80915BC + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence9 + + thumb_func_start sub_80915BC +sub_80915BC: @ 80915BC + push {r4,lr} + ldr r3, =gUnknown_0850D958 + 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 + .pool + thumb_func_end sub_80915BC + + thumb_func_start sub_80915DC +sub_80915DC: @ 80915DC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D964 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08091608 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091608 + movs r0, 0x3 + strb r0, [r2] +_08091608: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80915DC + + thumb_func_start FieldObjectCB_GoInDirectionSequence10 +FieldObjectCB_GoInDirectionSequence10: @ 8091624 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091648 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence10 + + thumb_func_start sub_8091648 +sub_8091648: @ 8091648 + push {r4,lr} + ldr r3, =gUnknown_0850D968 + 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 + .pool + thumb_func_end sub_8091648 + + thumb_func_start sub_8091668 +sub_8091668: @ 8091668 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D974 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08091694 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091694 + movs r0, 0x2 + strb r0, [r2] +_08091694: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091668 + + thumb_func_start FieldObjectCB_GoInDirectionSequence11 +FieldObjectCB_GoInDirectionSequence11: @ 80916B0 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80916D4 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence11 + + thumb_func_start sub_80916D4 +sub_80916D4: @ 80916D4 + push {r4,lr} + ldr r3, =gUnknown_0850D978 + 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 + .pool + thumb_func_end sub_80916D4 + + thumb_func_start sub_80916F4 +sub_80916F4: @ 80916F4 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D984 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08091720 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091720 + movs r0, 0x2 + strb r0, [r2] +_08091720: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80916F4 + + thumb_func_start FieldObjectCB_GoInDirectionSequence12 +FieldObjectCB_GoInDirectionSequence12: @ 809173C + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091760 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence12 + + thumb_func_start sub_8091760 +sub_8091760: @ 8091760 + push {r4,lr} + ldr r3, =gUnknown_0850D988 + 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 + .pool + thumb_func_end sub_8091760 + + thumb_func_start sub_8091780 +sub_8091780: @ 8091780 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D994 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080917AC + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080917AC + movs r0, 0x3 + strb r0, [r2] +_080917AC: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091780 + + thumb_func_start FieldObjectCB_GoInDirectionSequence13 +FieldObjectCB_GoInDirectionSequence13: @ 80917C8 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80917EC + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence13 + + thumb_func_start sub_80917EC +sub_80917EC: @ 80917EC + push {r4,lr} + ldr r3, =gUnknown_0850D998 + 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 + .pool + thumb_func_end sub_80917EC + + thumb_func_start sub_809180C +sub_809180C: @ 809180C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D9A4 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08091838 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091838 + movs r0, 0x3 + strb r0, [r2] +_08091838: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_809180C + + thumb_func_start FieldObjectCB_GoInDirectionSequence14 +FieldObjectCB_GoInDirectionSequence14: @ 8091854 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091878 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence14 + + thumb_func_start sub_8091878 +sub_8091878: @ 8091878 + push {r4,lr} + ldr r3, =gUnknown_0850D9A8 + 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 + .pool + thumb_func_end sub_8091878 + + thumb_func_start sub_8091898 +sub_8091898: @ 8091898 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D9B4 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _080918C4 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080918C4 + movs r0, 0x2 + strb r0, [r2] +_080918C4: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091898 + + thumb_func_start FieldObjectCB_GoInDirectionSequence15 +FieldObjectCB_GoInDirectionSequence15: @ 80918E0 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091904 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence15 + + thumb_func_start sub_8091904 +sub_8091904: @ 8091904 + push {r4,lr} + ldr r3, =gUnknown_0850D9B8 + 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 + .pool + thumb_func_end sub_8091904 + + thumb_func_start sub_8091924 +sub_8091924: @ 8091924 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D9C4 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x1 + bne _08091950 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091950 + movs r0, 0x2 + strb r0, [r2] +_08091950: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091924 + + thumb_func_start FieldObjectCB_GoInDirectionSequence16 +FieldObjectCB_GoInDirectionSequence16: @ 809196C + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091990 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence16 + + thumb_func_start sub_8091990 +sub_8091990: @ 8091990 + push {r4,lr} + ldr r3, =gUnknown_0850D9C8 + 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 + .pool + thumb_func_end sub_8091990 + + thumb_func_start sub_80919B0 +sub_80919B0: @ 80919B0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D9D4 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _080919DC + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _080919DC + movs r0, 0x3 + strb r0, [r2] +_080919DC: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80919B0 + + thumb_func_start FieldObjectCB_GoInDirectionSequence17 +FieldObjectCB_GoInDirectionSequence17: @ 80919F8 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091A1C + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence17 + + thumb_func_start sub_8091A1C +sub_8091A1C: @ 8091A1C + push {r4,lr} + ldr r3, =gUnknown_0850D9D8 + 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 + .pool + thumb_func_end sub_8091A1C + + thumb_func_start sub_8091A3C +sub_8091A3C: @ 8091A3C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D9E4 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08091A68 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091A68 + movs r0, 0x3 + strb r0, [r2] +_08091A68: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091A3C + + thumb_func_start FieldObjectCB_GoInDirectionSequence18 +FieldObjectCB_GoInDirectionSequence18: @ 8091A84 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091AA8 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence18 + + thumb_func_start sub_8091AA8 +sub_8091AA8: @ 8091AA8 + push {r4,lr} + ldr r3, =gUnknown_0850D9E8 + 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 + .pool + thumb_func_end sub_8091AA8 + + thumb_func_start sub_8091AC8 +sub_8091AC8: @ 8091AC8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850D9F4 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08091AF4 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091AF4 + movs r0, 0x3 + strb r0, [r2] +_08091AF4: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091AC8 + + thumb_func_start FieldObjectCB_GoInDirectionSequence19 +FieldObjectCB_GoInDirectionSequence19: @ 8091B10 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091B34 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence19 + + thumb_func_start sub_8091B34 +sub_8091B34: @ 8091B34 + push {r4,lr} + ldr r3, =gUnknown_0850D9F8 + 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 + .pool + thumb_func_end sub_8091B34 + + thumb_func_start sub_8091B54 +sub_8091B54: @ 8091B54 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850DA04 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08091B80 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091B80 + movs r0, 0x3 + strb r0, [r2] +_08091B80: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091B54 + + thumb_func_start FieldObjectCB_GoInDirectionSequence20 +FieldObjectCB_GoInDirectionSequence20: @ 8091B9C + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091BC0 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence20 + + thumb_func_start sub_8091BC0 +sub_8091BC0: @ 8091BC0 + push {r4,lr} + ldr r3, =gUnknown_0850DA08 + 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 + .pool + thumb_func_end sub_8091BC0 + + thumb_func_start sub_8091BE0 +sub_8091BE0: @ 8091BE0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850DA14 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08091C0C + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091C0C + movs r0, 0x3 + strb r0, [r2] +_08091C0C: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091BE0 + + thumb_func_start FieldObjectCB_GoInDirectionSequence21 +FieldObjectCB_GoInDirectionSequence21: @ 8091C28 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091C4C + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence21 + + thumb_func_start sub_8091C4C +sub_8091C4C: @ 8091C4C + push {r4,lr} + ldr r3, =gUnknown_0850DA18 + 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 + .pool + thumb_func_end sub_8091C4C + + thumb_func_start sub_8091C6C +sub_8091C6C: @ 8091C6C + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850DA24 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08091C98 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091C98 + movs r0, 0x3 + strb r0, [r2] +_08091C98: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091C6C + + thumb_func_start FieldObjectCB_GoInDirectionSequence22 +FieldObjectCB_GoInDirectionSequence22: @ 8091CB4 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091CD8 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence22 + + thumb_func_start sub_8091CD8 +sub_8091CD8: @ 8091CD8 + push {r4,lr} + ldr r3, =gUnknown_0850DA28 + 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 + .pool + thumb_func_end sub_8091CD8 + + thumb_func_start sub_8091CF8 +sub_8091CF8: @ 8091CF8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850DA34 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08091D24 + movs r0, 0xE + ldrsh r1, [r4, r0] + movs r3, 0x12 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091D24 + movs r0, 0x3 + strb r0, [r2] +_08091D24: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091CF8 + + thumb_func_start FieldObjectCB_GoInDirectionSequence23 +FieldObjectCB_GoInDirectionSequence23: @ 8091D40 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091D64 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence23 + + thumb_func_start sub_8091D64 +sub_8091D64: @ 8091D64 + push {r4,lr} + ldr r3, =gUnknown_0850DA38 + 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 + .pool + thumb_func_end sub_8091D64 + + thumb_func_start sub_8091D84 +sub_8091D84: @ 8091D84 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850DA44 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08091DB0 + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091DB0 + movs r0, 0x3 + strb r0, [r2] +_08091DB0: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091D84 + + thumb_func_start FieldObjectCB_GoInDirectionSequence24 +FieldObjectCB_GoInDirectionSequence24: @ 8091DCC + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091DF0 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_GoInDirectionSequence24 + + thumb_func_start sub_8091DF0 +sub_8091DF0: @ 8091DF0 + push {r4,lr} + ldr r3, =gUnknown_0850DA48 + 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 + .pool + thumb_func_end sub_8091DF0 + + thumb_func_start sub_8091E10 +sub_8091E10: @ 8091E10 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850DA54 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r2, r4, 0 + adds r2, 0x21 + ldrb r0, [r2] + cmp r0, 0x2 + bne _08091E3C + movs r0, 0xC + ldrsh r1, [r4, r0] + movs r3, 0x10 + ldrsh r0, [r4, r3] + cmp r1, r0 + bne _08091E3C + movs r0, 0x3 + strb r0, [r2] +_08091E3C: + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl MoveFieldObjectInNextDirectionInSequence + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091E10 + + thumb_func_start FieldObjectCB_CopyPlayer1 +FieldObjectCB_CopyPlayer1: @ 8091E58 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8091E7C + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_CopyPlayer1 + + thumb_func_start sub_8091E7C +sub_8091E7C: @ 8091E7C + push {r4,lr} + ldr r3, =gUnknown_0850DA58 + 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 + .pool + thumb_func_end sub_8091E7C + + thumb_func_start mss_npc_reset_oampriv3_1_unk2_unk3 +@ bool8 mss_npc_reset_oampriv3_1_unk2_unk3(struct npc_state *fieldObject, struct obj *object) +mss_npc_reset_oampriv3_1_unk2_unk3: @ 8091E9C + 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 _08091EB4 + bl player_get_direction_lower_nybble + strb r0, [r4] +_08091EB4: + 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_8091EC0 +@ bool8 sub_8091EC0(struct npc_state *fieldObject, struct obj *object) +sub_8091EC0: @ 8091EC0 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + ldr r2, =0x02037350 + ldr r3, =0x02037590 + 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 _08091EE0 + ldrb r0, [r3, 0x3] + cmp r0, 0x2 + bne _08091EEC +_08091EE0: + movs r0, 0 + b _08091F14 + .pool +_08091EEC: + ldr r5, =gUnknown_0850DA64 + 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 +_08091F14: + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8091EC0 + + thumb_func_start sub_8091F20 +sub_8091F20: @ 8091F20 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _08091F3E + ldrb r0, [r4] + movs r1, 0x3 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + movs r0, 0x1 + strh r0, [r5, 0x30] +_08091F3E: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8091F20 + + thumb_func_start sub_8091F48 +sub_8091F48: @ 8091F48 + movs r0, 0 + bx lr + thumb_func_end sub_8091F48 + + thumb_func_start sub_8091F4C +sub_8091F4C: @ 8091F4C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r1, =gUnknown_085055CD + 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 GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + 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 + .pool + thumb_func_end sub_8091F4C + + thumb_func_start sub_8091F94 +sub_8091F94: @ 8091F94 + 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 r5, r2, 24 + adds r6, r5, 0 + bl FieldObjectIsFarawayIslandMew + lsls r0, 24 + cmp r0, 0 + beq _08091FFC + bl sub_81D427C + adds r5, r0, 0 + cmp r5, 0 + bne _08092012 + adds r5, r6, 0 + ldr r1, =gUnknown_085055CD + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r5, 0 + bl state_to_direction + adds r5, r0, 0 + mov r3, sp + adds r3, 0x2 + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + bl FieldObjectMoveDestCoords + adds r0, r5, 0 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim + b _08092084 + .pool +_08091FFC: + ldr r1, =gUnknown_085055CD + ldrb r0, [r4, 0x6] + adds r0, r1 + ldrb r0, [r0] + adds r1, r4, 0 + adds r1, 0x21 + ldrb r1, [r1] + adds r2, r5, 0 + bl state_to_direction + adds r5, r0, 0 +_08092012: + mov r6, sp + adds r6, 0x2 + adds r0, r4, 0 + adds r1, r5, 0 + mov r2, sp + adds r3, r6, 0 + bl FieldObjectMoveDestCoords + adds r0, r5, 0 + bl GetGoSpeed0AnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0 + ldrsh r2, [r6, r0] + adds r0, r4, 0 + adds r3, r5, 0 + bl npc_block_way + lsls r0, 24 + cmp r0, 0 + bne _08092070 + mov r1, r8 + cmp r1, 0 + beq _08092084 + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + movs r2, 0 + ldrsh r1, [r6, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r8 + lsls r0, 24 + cmp r0, 0 + bne _08092084 +_08092070: + adds r0, r5, 0 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim +_08092084: + 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 + .pool + thumb_func_end sub_8091F94 + + thumb_func_start sub_80920A4 +sub_80920A4: @ 80920A4 + 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, =gUnknown_085055CD + 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 FieldObjectMoveDestCoords + adds r0, r6, 0 + bl GetGoSpeed1AnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim + 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 _0809212A + mov r1, r8 + cmp r1, 0 + beq _0809213E + 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 _0809213E +_0809212A: + adds r0, r6, 0 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim +_0809213E: + 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 + .pool + thumb_func_end sub_80920A4 + + thumb_func_start sub_809215C +sub_809215C: @ 809215C + 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, =gUnknown_085055CD + 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 FieldObjectMoveDestCoords + adds r0, r6, 0 + bl GetGoSpeed3AnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim + 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 _080921E2 + mov r1, r8 + cmp r1, 0 + beq _080921F6 + 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 _080921F6 +_080921E2: + adds r0, r6, 0 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim +_080921F6: + 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 + .pool + thumb_func_end sub_809215C + + thumb_func_start sub_8092214 +sub_8092214: @ 8092214 + 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, =gUnknown_085055CD + 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 FieldObjectMoveDestCoords + adds r0, r6, 0 + bl sub_8093438 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim + 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 _0809229A + mov r1, r8 + cmp r1, 0 + beq _080922AE + 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 _080922AE +_0809229A: + adds r0, r6, 0 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim +_080922AE: + 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 + .pool + thumb_func_end sub_8092214 + + thumb_func_start cph_IM_DIFFERENT +cph_IM_DIFFERENT: @ 80922CC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldr r1, =gUnknown_085055CD + 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_80934BC + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + 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 + .pool + thumb_func_end cph_IM_DIFFERENT + + thumb_func_start sub_8092314 +sub_8092314: @ 8092314 + 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, =gUnknown_085055CD + 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 FieldObjectMoveDestCoords + adds r0, r6, 0 + bl sub_8093514 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim + 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 _0809239A + mov r1, r8 + cmp r1, 0 + beq _080923AE + 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 _080923AE +_0809239A: + adds r0, r6, 0 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim +_080923AE: + 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 + .pool + thumb_func_end sub_8092314 + + thumb_func_start oac_hopping +oac_hopping: @ 80923CC + 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, =gUnknown_085055CD + 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_8092F88 + 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 FieldObjectSetRegularAnim + 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 _08092460 + mov r1, r8 + cmp r1, 0 + beq _08092474 + 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 _08092474 +_08092460: + adds r0, r6, 0 + bl GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r7, 0 + bl FieldObjectSetRegularAnim +_08092474: + 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 + .pool + thumb_func_end oac_hopping + + thumb_func_start FieldObjectCB_CopyPlayer2 +FieldObjectCB_CopyPlayer2: @ 8092494 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80924B8 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_CopyPlayer2 + + thumb_func_start sub_80924B8 +sub_80924B8: @ 80924B8 + push {r4,lr} + ldr r3, =gUnknown_0850DA90 + 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 + .pool + thumb_func_end sub_80924B8 + + thumb_func_start mss_08062EA4 +mss_08062EA4: @ 80924D8 + push {r4-r7,lr} + adds r6, r0, 0 + adds r7, r1, 0 + ldr r2, =0x02037350 + ldr r3, =0x02037590 + 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 _080924F8 + ldrb r0, [r3, 0x3] + cmp r0, 0x2 + bne _08092504 +_080924F8: + movs r0, 0 + b _0809252C + .pool +_08092504: + ldr r5, =gUnknown_0850DA64 + 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, =sub_8088E64 + ldr r4, [r4] + adds r0, r6, 0 + adds r1, r7, 0 + bl _call_via_r4 + lsls r0, 24 + lsrs r0, 24 +_0809252C: + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end mss_08062EA4 + + thumb_func_start FieldObjectCB_TreeDisguise +@ void FieldObjectCB_TreeDisguise(struct obj *object) +FieldObjectCB_TreeDisguise: @ 809253C + 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, =0x02037350 + adds r4, r1, r0 + adds r6, r4, 0 + adds r6, 0x21 + ldrb r0, [r6] + cmp r0, 0 + beq _08092564 + cmp r0, 0x1 + bne _08092584 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08092584 +_08092564: + ldr r1, =0x02038c08 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + adds r0, r4, 0 + bl FieldObjectGetLocalIdAndMap + 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] +_08092584: + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + ldr r2, =sub_80925AC + adds r1, r5, 0 + bl FieldObjectStep + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_TreeDisguise + + thumb_func_start sub_80925AC +sub_80925AC: @ 80925AC + push {lr} + bl npc_reset + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_80925AC + + thumb_func_start FieldObjectCB_MountainDisguise +FieldObjectCB_MountainDisguise: @ 80925B8 + 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, =0x02037350 + adds r4, r1, r0 + adds r6, r4, 0 + adds r6, 0x21 + ldrb r0, [r6] + cmp r0, 0 + beq _080925E0 + cmp r0, 0x1 + bne _08092600 + movs r1, 0x3C + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _08092600 +_080925E0: + ldr r1, =0x02038c08 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + adds r0, r4, 0 + bl FieldObjectGetLocalIdAndMap + 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] +_08092600: + movs r0, 0x2E + ldrsh r1, [r5, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =0x02037350 + adds r0, r1 + ldr r2, =sub_80925AC + adds r1, r5, 0 + bl FieldObjectStep + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_MountainDisguise + + thumb_func_start FieldObjectCB_Hidden1 +@ void FieldObjectCB_Hidden1(struct obj *object) +FieldObjectCB_Hidden1: @ 8092628 + push {r4,lr} + adds r3, r0, 0 + movs r1, 0x3C + ldrsh r0, [r3, r1] + ldr r4, =0x02037350 + cmp r0, 0 + bne _08092668 + 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] +_08092668: + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + ldr r2, =sub_809268C + adds r1, r3, 0 + bl FieldObjectStep + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_Hidden1 + + thumb_func_start sub_809268C +sub_809268C: @ 809268C + push {r4,lr} + ldr r3, =gUnknown_0850DA9C + 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 + .pool + thumb_func_end sub_809268C + + thumb_func_start sub_80926AC +sub_80926AC: @ 80926AC + push {lr} + bl npc_reset + movs r0, 0 + pop {r1} + bx r1 + thumb_func_end sub_80926AC + + thumb_func_start sub_80926B8 +@ bool8 sub_80926B8(struct npc_state *fieldObject, struct obj *object) +sub_80926B8: @ 80926B8 + push {r4,lr} + adds r4, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + beq _080926CA + movs r0, 0 + strh r0, [r4, 0x30] +_080926CA: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80926B8 + + thumb_func_start FieldObjectCB_WalkInPlace1 +FieldObjectCB_WalkInPlace1: @ 80926D4 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80926F8 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_WalkInPlace1 + + thumb_func_start sub_80926F8 +sub_80926F8: @ 80926F8 + push {r4,lr} + ldr r3, =gUnknown_0850DAA0 + 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 + .pool + thumb_func_end sub_80926F8 + + thumb_func_start sub_8092718 +sub_8092718: @ 8092718 + 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 FieldObjectSetRegularAnim + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8092718 + + thumb_func_start FieldObjectCB_WalkInPlace4 +FieldObjectCB_WalkInPlace4: @ 8092744 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8092768 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_WalkInPlace4 + + thumb_func_start sub_8092768 +sub_8092768: @ 8092768 + push {r4,lr} + ldr r3, =gUnknown_0850DAA8 + 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 + .pool + thumb_func_end sub_8092768 + + thumb_func_start sub_8092788 +sub_8092788: @ 8092788 + 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 GetStepInPlaceDelay32AnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8092788 + + thumb_func_start FieldObjectCB_WalkInPlace2 +FieldObjectCB_WalkInPlace2: @ 80927B4 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80927D8 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_WalkInPlace2 + + thumb_func_start sub_80927D8 +sub_80927D8: @ 80927D8 + push {r4,lr} + ldr r3, =gUnknown_0850DAB0 + 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 + .pool + thumb_func_end sub_80927D8 + + thumb_func_start sub_80927F8 +@ bool8 sub_80927F8(struct npc_state *fieldObject, struct obj *object) +sub_80927F8: @ 80927F8 + 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 GetStepInPlaceDelay8AnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80927F8 + + thumb_func_start FieldObjectCB_WalkInPlace3 +FieldObjectCB_WalkInPlace3: @ 8092824 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_8092848 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_WalkInPlace3 + + thumb_func_start sub_8092848 +sub_8092848: @ 8092848 + push {r4,lr} + ldr r3, =gUnknown_0850DAB8 + 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 + .pool + thumb_func_end sub_8092848 + + thumb_func_start sub_8092868 +sub_8092868: @ 8092868 + 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 FieldObjectSetRegularAnim + movs r0, 0x1 + strh r0, [r5, 0x30] + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8092868 + + thumb_func_start FieldObjectCB_Hidden2 +FieldObjectCB_Hidden2: @ 8092894 + 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, =0x02037350 + adds r0, r2 + ldr r2, =sub_80928B8 + bl FieldObjectStep + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectCB_Hidden2 + + thumb_func_start sub_80928B8 +sub_80928B8: @ 80928B8 + push {r4,lr} + ldr r3, =gUnknown_0850DAC0 + 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 + .pool + thumb_func_end sub_80928B8 + + thumb_func_start sub_80928D8 +sub_80928D8: @ 80928D8 + 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 GetFaceDirectionAnimId + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetRegularAnim + 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_80928D8 + + thumb_func_start sub_809290C +sub_809290C: @ 809290C + push {r4,lr} + adds r4, r1, 0 + bl FieldObjectExecRegularAnim + lsls r0, 24 + cmp r0, 0 + bne _0809291E + movs r0, 0 + b _08092924 +_0809291E: + movs r0, 0x2 + strh r0, [r4, 0x30] + movs r0, 0x1 +_08092924: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809290C + + thumb_func_start sub_809292C +sub_809292C: @ 809292C + ldrb r2, [r0] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + strb r1, [r0] + movs r0, 0 + bx lr + thumb_func_end sub_809292C + + thumb_func_start npc_reset +@ void npc_reset(struct npc_state *fieldObject, struct obj *object) +npc_reset: @ 809293C + 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 FieldObjectDirectionToImageAnimId +@ u8 FieldObjectDirectionToImageAnimId(u8 direction) +FieldObjectDirectionToImageAnimId: @ 809295C + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DACC + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end FieldObjectDirectionToImageAnimId + + thumb_func_start get_go_image_anim_num +get_go_image_anim_num: @ 809296C + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DAD5 + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end get_go_image_anim_num + + thumb_func_start get_go_fast_image_anim_num +get_go_fast_image_anim_num: @ 809297C + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DADE + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end get_go_fast_image_anim_num + + thumb_func_start get_go_faster_image_anim_num +get_go_faster_image_anim_num: @ 809298C + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DAE7 + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end get_go_faster_image_anim_num + + thumb_func_start get_go_fastest_image_anim_num +get_go_fastest_image_anim_num: @ 809299C + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DAF0 + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end get_go_fastest_image_anim_num + + thumb_func_start sub_80929AC +sub_80929AC: @ 80929AC + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DAF9 + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sub_80929AC + + thumb_func_start sub_80929BC +sub_80929BC: @ 80929BC + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DB02 + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sub_80929BC + + thumb_func_start sub_80929CC +sub_80929CC: @ 80929CC + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DB0B + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sub_80929CC + + thumb_func_start sub_80929DC +sub_80929DC: @ 80929DC + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DB14 + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sub_80929DC + + thumb_func_start sub_80929EC +sub_80929EC: @ 80929EC + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DB1D + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sub_80929EC + + thumb_func_start sub_80929FC +sub_80929FC: @ 80929FC + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DB26 + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sub_80929FC + + thumb_func_start sub_8092A0C +sub_8092A0C: @ 8092A0C + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DB2F + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sub_8092A0C + + thumb_func_start sub_8092A1C +sub_8092A1C: @ 8092A1C + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DB38 + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sub_8092A1C + + thumb_func_start sub_8092A2C +sub_8092A2C: @ 8092A2C + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DB41 + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sub_8092A2C + + thumb_func_start get_run_image_anim_num +get_run_image_anim_num: @ 8092A3C + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DB4A + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end get_run_image_anim_num + + thumb_func_start sub_8092A4C +sub_8092A4C: @ 8092A4C + push {lr} + adds r2, r0, 0 + ldr r1, =gUnknown_085094AC + b _08092A64 + .pool +_08092A58: + ldr r0, [r1] + cmp r0, r2 + bne _08092A62 + adds r0, r1, 0 + b _08092A6C +_08092A62: + adds r1, 0x8 +_08092A64: + ldr r0, [r1] + cmp r0, 0 + bne _08092A58 + movs r0, 0 +_08092A6C: + pop {r1} + bx r1 + thumb_func_end sub_8092A4C + + thumb_func_start npc_apply_anim_looping +@ void npc_apply_anim_looping(struct npc_state *fieldObject, struct obj *object, u8 anim) +npc_apply_anim_looping: @ 8092A70 + push {r4,lr} + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r0, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _08092AB2 + adds r0, r4, 0 + adds r0, 0x2A + strb r2, [r0] + ldr r0, [r4, 0x8] + bl sub_8092A4C + adds r1, r4, 0 + adds r1, 0x2B + cmp r0, 0 + beq _08092AAA + ldrb r2, [r1] + ldrb r3, [r0, 0x4] + cmp r2, r3 + bne _08092AA0 + ldrb r0, [r0, 0x7] + b _08092AA8 +_08092AA0: + ldrb r3, [r0, 0x5] + cmp r2, r3 + bne _08092AAA + ldrb r0, [r0, 0x6] +_08092AA8: + strb r0, [r1] +_08092AAA: + ldrb r1, [r1] + adds r0, r4, 0 + bl SeekObjectImageAnim +_08092AB2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end npc_apply_anim_looping + + thumb_func_start obj_npc_animation_step +@ void obj_npc_animation_step(struct npc_state *fieldObject, struct obj *object, u8 anim) +obj_npc_animation_step: @ 8092AB8 + push {r4,lr} + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + ldrb r0, [r0, 0x1] + lsls r0, 27 + cmp r0, 0 + blt _08092AF0 + adds r0, r4, 0 + adds r0, 0x2A + strb r2, [r0] + ldr r0, [r4, 0x8] + bl sub_8092A4C + adds r2, r0, 0 + cmp r2, 0 + beq _08092AF0 + ldrb r1, [r2, 0x5] + adds r0, r4, 0 + adds r0, 0x2B + ldrb r0, [r0] + ldrb r3, [r2, 0x4] + cmp r0, r3 + bhi _08092AEA + ldrb r1, [r2, 0x4] +_08092AEA: + adds r0, r4, 0 + bl SeekObjectImageAnim +_08092AF0: + pop {r4} + pop {r0} + bx r0 + thumb_func_end obj_npc_animation_step + + thumb_func_start sub_8092AF8 +sub_8092AF8: @ 8092AF8 + 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 _08092B12 + movs r0, 0x3 + b _08092B28 +_08092B12: + cmp r0, r2 + bge _08092B1A + movs r0, 0x4 + b _08092B28 +_08092B1A: + lsls r1, 16 + lsls r0, r3, 16 + cmp r1, r0 + bgt _08092B26 + movs r0, 0x1 + b _08092B28 +_08092B26: + movs r0, 0x2 +_08092B28: + pop {r1} + bx r1 + thumb_func_end sub_8092AF8 + + thumb_func_start npc_set_running_behaviour_etc +npc_set_running_behaviour_etc: @ 8092B2C + 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, =0x02020630 + 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, =gUnknown_08505438 + 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 + .pool + thumb_func_end npc_set_running_behaviour_etc + + thumb_func_start npc_running_behaviour_by_direction +npc_running_behaviour_by_direction: @ 8092B78 + lsls r0, 24 + lsrs r0, 24 + ldr r1, =gUnknown_0850DB53 + adds r0, r1 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end npc_running_behaviour_by_direction + + thumb_func_start sub_8092B88 +sub_8092B88: @ 8092B88 + 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 sub_8092B88 + + thumb_func_start npc_block_way +@ u8 npc_block_way(struct npc_state *fieldObject, u16 x, u16 y, u8 direction) +npc_block_way: @ 8092BC8 + 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 IsCoordOutsideFieldObjectMovementRect + lsls r0, 24 + cmp r0, 0 + beq _08092BFE + movs r0, 0x1 + b _08092C7E +_08092BFE: + adds r0, r5, 0 + adds r1, r4, 0 + bl MapGridIsImpassableAt + lsls r0, 24 + cmp r0, 0 + bne _08092C40 + adds r0, r5, 0 + adds r1, r4, 0 + bl GetMapBorderIdAt + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _08092C40 + 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 _08092C40 + ldrb r0, [r6, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _08092C44 + mov r0, r8 + bl CanCameraMoveInDirection + cmp r0, 0 + bne _08092C44 +_08092C40: + movs r0, 0x2 + b _08092C7E +_08092C44: + 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 _08092C68 + movs r0, 0x3 + b _08092C7E +_08092C68: + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl CheckForCollisionBetweenFieldObjects + lsls r0, 24 + cmp r0, 0 + bne _08092C7C + movs r0, 0 + b _08092C7E +_08092C7C: + movs r0, 0x4 +_08092C7E: + 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_8092C8C +sub_8092C8C: @ 8092C8C + 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 IsCoordOutsideFieldObjectMovementRect + 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 _08092D04 + adds r0, r6, 0 + adds r1, r5, 0 + bl GetMapBorderIdAt + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _08092D04 + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + mov r3, r8 + bl IsMetatileDirectionallyImpassable + lsls r0, 24 + cmp r0, 0 + bne _08092D04 + ldrb r0, [r7, 0x1] + lsrs r0, 7 + cmp r0, 0 + beq _08092D08 + mov r0, r8 + bl CanCameraMoveInDirection + cmp r0, 0 + bne _08092D08 +_08092D04: + movs r0, 0x2 + orrs r4, r0 +_08092D08: + 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 _08092D30 + movs r0, 0x4 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_08092D30: + adds r0, r7, 0 + adds r1, r6, 0 + adds r2, r5, 0 + bl CheckForCollisionBetweenFieldObjects + lsls r0, 24 + cmp r0, 0 + beq _08092D48 + movs r0, 0x8 + orrs r4, r0 + lsls r0, r4, 24 + lsrs r4, r0, 24 +_08092D48: + 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_8092C8C + + thumb_func_start IsCoordOutsideFieldObjectMovementRect +@ bool8 IsCoordOutsideFieldObjectMovementRect(struct npc_state *fieldObject, u16 x, u16 y) +IsCoordOutsideFieldObjectMovementRect: @ 8092D58 + 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 _08092D90 + 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 _08092DBC + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r3 + blt _08092DBC +_08092D90: + ldrb r1, [r4, 0x19] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0 + beq _08092DC0 + 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 _08092DBC + lsls r0, r1, 16 + asrs r0, 16 + cmp r0, r3 + bge _08092DC0 +_08092DBC: + movs r0, 0x1 + b _08092DC2 +_08092DC0: + movs r0, 0 +_08092DC2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end IsCoordOutsideFieldObjectMovementRect + + thumb_func_start IsMetatileDirectionallyImpassable +@ bool8 IsMetatileDirectionallyImpassable(struct npc_state *fieldObject, u16 x, u16 y, u8 direction) +IsMetatileDirectionallyImpassable: @ 8092DC8 + push {r4-r7,lr} + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 16 + lsrs r7, r2, 16 + lsls r3, 24 + ldr r1, =gUnknown_0850DB5C + 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 _08092E0A + ldr r4, =gUnknown_0850DB6C + 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 _08092E18 +_08092E0A: + movs r0, 0x1 + b _08092E1A + .pool +_08092E18: + movs r0, 0 +_08092E1A: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end IsMetatileDirectionallyImpassable + + thumb_func_start CheckForCollisionBetweenFieldObjects +@ bool8 CheckForCollisionBetweenFieldObjects(struct npc_state *fieldObject, u16 x, u16 y) +CheckForCollisionBetweenFieldObjects: @ 8092E20 + 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 +_08092E2E: + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + ldr r1, =0x02037350 + adds r2, r0, r1 + ldrb r0, [r2] + lsls r0, 31 + cmp r0, 0 + beq _08092E88 + cmp r2, r6 + beq _08092E88 + movs r0, 0x10 + ldrsh r1, [r2, r0] + lsls r0, r7, 16 + asrs r3, r0, 16 + cmp r1, r3 + bne _08092E58 + movs r1, 0x12 + ldrsh r0, [r2, r1] + cmp r0, r5 + beq _08092E68 +_08092E58: + movs r1, 0x14 + ldrsh r0, [r2, r1] + cmp r0, r3 + bne _08092E88 + movs r1, 0x16 + ldrsh r0, [r2, r1] + cmp r0, r5 + bne _08092E88 +_08092E68: + 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 _08092E88 + movs r0, 0x1 + b _08092E94 + .pool +_08092E88: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08092E2E + movs r0, 0 +_08092E94: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CheckForCollisionBetweenFieldObjects + + thumb_func_start sub_8092E9C +sub_8092E9C: @ 8092E9C + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _08092EE8 + ldr r3, =0x02020630 + ldr r2, =0x02037350 + 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 _08092EE8 + movs r0, 0x1 + b _08092EEA + .pool +_08092EE8: + movs r0, 0 +_08092EEA: + add sp, 0x4 + pop {r1} + bx r1 + thumb_func_end sub_8092E9C + + thumb_func_start sub_8092EF0 +sub_8092EF0: @ 8092EF0 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _08092F2E + ldr r3, =0x02020630 + ldr r2, =0x02037350 + 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] +_08092F2E: + add sp, 0x4 + pop {r0} + bx r0 + .pool + thumb_func_end sub_8092EF0 + + thumb_func_start MoveCoords +@ void MoveCoords(u8 direction, u16 *x, u16 *y) +MoveCoords: @ 8092F3C + push {r4,lr} + lsls r0, 24 + ldr r3, =gUnknown_0850DB7C + 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 + .pool + thumb_func_end MoveCoords + + thumb_func_start sub_8092F60 +sub_8092F60: @ 8092F60 + push {r4,lr} + lsls r0, 24 + ldr r3, =gUnknown_0850DB7C + 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 + .pool + thumb_func_end sub_8092F60 + + thumb_func_start sub_8092F88 +sub_8092F88: @ 8092F88 + 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, =gUnknown_0850DB7C + lsrs r0, 22 + adds r5, r0, r1 + movs r0, 0 + ldrsh r1, [r5, r0] + cmp r1, 0 + ble _08092FB4 + lsls r0, r3, 16 + asrs r0, 16 + ldrh r3, [r4] + adds r0, r3 + strh r0, [r4] +_08092FB4: + cmp r1, 0 + bge _08092FC2 + ldrh r1, [r4] + lsls r0, r7, 16 + asrs r0, 16 + subs r1, r0 + strh r1, [r4] +_08092FC2: + movs r0, 0x2 + ldrsh r1, [r5, r0] + cmp r1, 0 + ble _08092FD4 + lsls r0, r6, 16 + asrs r0, 16 + ldrh r3, [r2] + adds r0, r3 + strh r0, [r2] +_08092FD4: + cmp r1, 0 + bge _08092FE4 + ldrh r1, [r2] + mov r3, r12 + lsls r0, r3, 16 + asrs r0, 16 + subs r1, r0 + strh r1, [r2] +_08092FE4: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8092F88 + + thumb_func_start sub_8092FF0 +sub_8092FF0: @ 8092FF0 + push {r4,r5,lr} + ldr r5, =0x03005d8c + 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, =0x03005dec + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r2] + ldr r1, =0x03005de8 + ldrh r0, [r3] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r3] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8092FF0 + + thumb_func_start sub_8093038 +sub_8093038: @ 8093038 + 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, =0x03005dec + ldrh r0, [r0] + negs r0, r0 + ldr r1, =0x03005dd0 + ldr r2, [r1, 0x10] + subs r0, r2 + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, =0x03005de8 + ldrh r0, [r0] + negs r0, r0 + ldr r1, [r1, 0x14] + subs r0, r1 + lsls r0, 16 + lsrs r4, r0, 16 + cmp r2, 0 + ble _08093072 + lsls r0, r3, 16 + movs r3, 0x80 + lsls r3, 13 + adds r0, r3 + lsrs r3, r0, 16 +_08093072: + cmp r2, 0 + bge _0809307E + lsls r0, r3, 16 + ldr r2, =0xfff00000 + adds r0, r2 + lsrs r3, r0, 16 +_0809307E: + cmp r1, 0 + ble _0809308C + lsls r0, r4, 16 + movs r2, 0x80 + lsls r2, 13 + adds r0, r2 + lsrs r4, r0, 16 +_0809308C: + cmp r1, 0 + bge _08093098 + lsls r0, r4, 16 + ldr r1, =0xfff00000 + adds r0, r1 + lsrs r4, r0, 16 +_08093098: + ldr r2, =0x03005d8c + 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 + .pool + thumb_func_end sub_8093038 + + thumb_func_start sub_80930E0 +sub_80930E0: @ 80930E0 + 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_8093038 + 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_80930E0 + + thumb_func_start GetFieldObjectMovingCameraOffset +@ void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y) +GetFieldObjectMovingCameraOffset: @ 809312C + push {lr} + adds r2, r0, 0 + movs r0, 0 + strh r0, [r2] + strh r0, [r1] + ldr r3, =0x03005dd0 + ldr r0, [r3, 0x10] + cmp r0, 0 + ble _08093142 + movs r0, 0x1 + strh r0, [r2] +_08093142: + ldr r0, [r3, 0x10] + cmp r0, 0 + bge _0809314E + ldrh r0, [r2] + subs r0, 0x1 + strh r0, [r2] +_0809314E: + ldr r2, [r3, 0x14] + cmp r2, 0 + ble _0809315A + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] +_0809315A: + cmp r2, 0 + bge _08093164 + ldrh r0, [r1] + subs r0, 0x1 + strh r0, [r1] +_08093164: + pop {r0} + bx r0 + .pool + thumb_func_end GetFieldObjectMovingCameraOffset + + thumb_func_start FieldObjectMoveDestCoords +@ void FieldObjectMoveDestCoords(struct npc_state *fieldObject, u8 direction) +FieldObjectMoveDestCoords: @ 809316C + 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 FieldObjectMoveDestCoords + + thumb_func_start FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive +@ bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct npc_state *fieldObject) +FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive: @ 809318C + push {lr} + ldrb r1, [r0] + movs r0, 0x42 + ands r0, r1 + cmp r0, 0 + bne _0809319C + movs r0, 0 + b _0809319E +_0809319C: + movs r0, 0x1 +_0809319E: + pop {r1} + bx r1 + thumb_func_end FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + + thumb_func_start FieldObjectIsSpecialAnimActive +@ bool8 FieldObjectIsSpecialAnimActive(struct npc_state *fieldObject) +FieldObjectIsSpecialAnimActive: @ 80931A4 + push {lr} + adds r1, r0, 0 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + bge _080931BA + ldrb r0, [r1, 0x1C] + cmp r0, 0xFF + beq _080931BA + movs r0, 0x1 + b _080931BC +_080931BA: + movs r0, 0 +_080931BC: + pop {r1} + bx r1 + thumb_func_end FieldObjectIsSpecialAnimActive + + thumb_func_start FieldObjectSetSpecialAnim +@ bool8 FieldObjectSetSpecialAnim(struct npc_state *fieldObject, u8 animId) +FieldObjectSetSpecialAnim: @ 80931C0 + push {r4-r6,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + bne _08093200 + adds r0, r4, 0 + bl npc_sync_anim_pause_bits + strb r5, [r4, 0x1C] + ldrb r0, [r4] + movs r1, 0x40 + orrs r0, r1 + movs r1, 0x7F + ands r0, r1 + strb r0, [r4] + ldr r2, =0x02020630 + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r6, [r0, 0x32] + movs r0, 0 + b _08093202 + .pool +_08093200: + movs r0, 0x1 +_08093202: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end FieldObjectSetSpecialAnim + + thumb_func_start FieldObjectForceSetSpecialAnim +@ void FieldObjectForceSetSpecialAnim(struct npc_state *fieldObject, u8 animId) +FieldObjectForceSetSpecialAnim: @ 8093208 + push {r4,r5,lr} + adds r5, r0, 0 + lsls r4, r1, 24 + lsrs r4, 24 + bl FieldObjectClearAnimIfSpecialAnimActive + adds r0, r5, 0 + adds r1, r4, 0 + bl FieldObjectSetSpecialAnim + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end FieldObjectForceSetSpecialAnim + + thumb_func_start FieldObjectClearAnimIfSpecialAnimActive +@ void FieldObjectClearAnimIfSpecialAnimActive(struct npc_state *fieldObject) +FieldObjectClearAnimIfSpecialAnimActive: @ 8093224 + push {lr} + adds r1, r0, 0 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + bge _08093236 + adds r0, r1, 0 + bl FieldObjectClearAnim +_08093236: + pop {r0} + bx r0 + thumb_func_end FieldObjectClearAnimIfSpecialAnimActive + + thumb_func_start FieldObjectClearAnim +@ void FieldObjectClearAnim(struct npc_state *fieldObject) +FieldObjectClearAnim: @ 809323C + 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, =0x02020630 + 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 + .pool + thumb_func_end FieldObjectClearAnim + + thumb_func_start FieldObjectCheckIfSpecialAnimFinishedOrInactive +@ u8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct npc_state *fieldObject) +FieldObjectCheckIfSpecialAnimFinishedOrInactive: @ 8093270 + push {lr} + ldrb r1, [r0] + lsls r0, r1, 25 + cmp r0, 0 + blt _0809327E + movs r0, 0x10 + b _08093280 +_0809327E: + lsrs r0, r1, 7 +_08093280: + pop {r1} + bx r1 + thumb_func_end FieldObjectCheckIfSpecialAnimFinishedOrInactive + + thumb_func_start FieldObjectClearAnimIfSpecialAnimFinished +@ u8 FieldObjectClearAnimIfSpecialAnimFinished(struct npc_state *fieldObject) +FieldObjectClearAnimIfSpecialAnimFinished: @ 8093284 + push {r4,r5,lr} + adds r5, r0, 0 + bl FieldObjectCheckIfSpecialAnimFinishedOrInactive + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + beq _0809329E + cmp r4, 0x10 + beq _0809329E + adds r0, r5, 0 + bl FieldObjectClearAnimIfSpecialAnimActive +_0809329E: + adds r0, r4, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end FieldObjectClearAnimIfSpecialAnimFinished + + thumb_func_start FieldObjectGetSpecialAnim +@ u8 FieldObjectGetSpecialAnim(struct npc_state *fieldObject) +FieldObjectGetSpecialAnim: @ 80932A8 + push {lr} + adds r1, r0, 0 + ldrb r0, [r1] + lsls r0, 25 + cmp r0, 0 + blt _080932B8 + movs r0, 0xFF + b _080932BA +_080932B8: + ldrb r0, [r1, 0x1C] +_080932BA: + pop {r1} + bx r1 + thumb_func_end FieldObjectGetSpecialAnim + + thumb_func_start FieldObjectStep +@ void FieldObjectStep(struct npc_state *fieldObject, struct obj *object, bool8 ( *callback)(struct npc_state *fieldObject, struct obj *object)) +FieldObjectStep: @ 80932C0 + 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_80964E8 + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimActive + lsls r0, 24 + cmp r0, 0 + beq _080932EA + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectExecSpecialAnim + b _08093300 +_080932EA: + ldrb r0, [r4, 0x1] + lsls r0, 31 + cmp r0, 0 + bne _08093300 +_080932F2: + adds r0, r4, 0 + adds r1, r5, 0 + bl _call_via_r6 + lsls r0, 24 + cmp r0, 0 + bne _080932F2 +_08093300: + 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_8096518 + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectUpdateSubpriority + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end FieldObjectStep + + thumb_func_start GetFaceDirectionAnimId +@ u8 GetFaceDirectionAnimId(u8 direction) +GetFaceDirectionAnimId: @ 8093330 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBA0 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093348 + movs r4, 0 +_08093348: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetFaceDirectionAnimId + + thumb_func_start GetSimpleGoAnimId +@ u8 GetSimpleGoAnimId(u8 direction) +GetSimpleGoAnimId: @ 809335C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBA5 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093374 + movs r4, 0 +_08093374: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetSimpleGoAnimId + + thumb_func_start GetGoSpeed0AnimId +@ u8 GetGoSpeed0AnimId(u8 direction) +GetGoSpeed0AnimId: @ 8093388 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBAA + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080933A0 + movs r4, 0 +_080933A0: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetGoSpeed0AnimId + + thumb_func_start GetGoSpeed1AnimId +@ u8 GetGoSpeed1AnimId(u8 direction) +GetGoSpeed1AnimId: @ 80933B4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBAF + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080933CC + movs r4, 0 +_080933CC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetGoSpeed1AnimId + + thumb_func_start GetGoSpeed2AnimId +@ u8 GetGoSpeed2AnimId(u8 direction) +GetGoSpeed2AnimId: @ 80933E0 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBB4 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080933F8 + movs r4, 0 +_080933F8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetGoSpeed2AnimId + + thumb_func_start GetGoSpeed3AnimId +@ u8 GetGoSpeed3AnimId(u8 direction) +GetGoSpeed3AnimId: @ 809340C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBB9 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093424 + movs r4, 0 +_08093424: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetGoSpeed3AnimId + + thumb_func_start sub_8093438 +@ u8 sub_8093438(u8 direction) +sub_8093438: @ 8093438 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBBE + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093450 + movs r4, 0 +_08093450: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8093438 + + thumb_func_start GetRunAnimId +@ u8 GetRunAnimId(u8 direction) +GetRunAnimId: @ 8093464 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBC3 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0809347C + movs r4, 0 +_0809347C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetRunAnimId + + thumb_func_start GetJumpLedgeAnimId +@ u8 GetJumpLedgeAnimId(u8 direction) +GetJumpLedgeAnimId: @ 8093490 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBC8 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080934A8 + movs r4, 0 +_080934A8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetJumpLedgeAnimId + + thumb_func_start sub_80934BC +@ u8 sub_80934BC(u8 direction) +sub_80934BC: @ 80934BC + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBCD + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080934D4 + movs r4, 0 +_080934D4: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80934BC + + thumb_func_start sub_80934E8 +@ u8 sub_80934E8(u8 direction) +sub_80934E8: @ 80934E8 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBD2 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093500 + movs r4, 0 +_08093500: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80934E8 + + thumb_func_start sub_8093514 +@ u8 sub_8093514(u8 direction) +sub_8093514: @ 8093514 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBD7 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0809352C + movs r4, 0 +_0809352C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8093514 + + thumb_func_start sub_8093540 +@ u8 sub_8093540(u8 direction) +sub_8093540: @ 8093540 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBDC + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093558 + movs r4, 0 +_08093558: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8093540 + + thumb_func_start GetStepInPlaceDelay32AnimId +@ u8 GetStepInPlaceDelay32AnimId(u8 direction) +GetStepInPlaceDelay32AnimId: @ 809356C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBE1 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093584 + movs r4, 0 +_08093584: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetStepInPlaceDelay32AnimId + + thumb_func_start GetStepInPlaceDelay16AnimId +@ u8 GetStepInPlaceDelay16AnimId(u8 direction) +GetStepInPlaceDelay16AnimId: @ 8093598 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBE6 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080935B0 + movs r4, 0 +_080935B0: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetStepInPlaceDelay16AnimId + + thumb_func_start GetStepInPlaceDelay8AnimId +@ u8 GetStepInPlaceDelay8AnimId(u8 direction) +GetStepInPlaceDelay8AnimId: @ 80935C4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBEB + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080935DC + movs r4, 0 +_080935DC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetStepInPlaceDelay8AnimId + + thumb_func_start GetStepInPlaceDelay4AnimId +@ u8 GetStepInPlaceDelay4AnimId(u8 direction) +GetStepInPlaceDelay4AnimId: @ 80935F0 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBF0 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093608 + movs r4, 0 +_08093608: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end GetStepInPlaceDelay4AnimId + + thumb_func_start FieldObjectFaceOppositeDirection +@ bool8 FieldObjectFaceOppositeDirection(struct npc_state *fieldObject, u8 direction) +FieldObjectFaceOppositeDirection: @ 809361C + push {r4,lr} + adds r4, r0, 0 + lsls r0, r1, 24 + lsrs r0, 24 + bl GetOppositeDirection + lsls r0, 24 + lsrs r0, 24 + bl GetFaceDirectionAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end FieldObjectFaceOppositeDirection + + thumb_func_start sub_8093648 +sub_8093648: @ 8093648 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBF5 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093660 + movs r4, 0 +_08093660: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8093648 + + thumb_func_start sub_8093674 +sub_8093674: @ 8093674 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBFA + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0809368C + movs r4, 0 +_0809368C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8093674 + + thumb_func_start sub_80936A0 +sub_80936A0: @ 80936A0 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DBFF + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080936B8 + movs r4, 0 +_080936B8: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80936A0 + + thumb_func_start sub_80936CC +sub_80936CC: @ 80936CC + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DC04 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080936E4 + movs r4, 0 +_080936E4: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80936CC + + thumb_func_start sub_80936F8 +sub_80936F8: @ 80936F8 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DC09 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093710 + movs r4, 0 +_08093710: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80936F8 + + thumb_func_start sub_8093724 +sub_8093724: @ 8093724 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DC0E + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _0809373C + movs r4, 0 +_0809373C: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8093724 + + thumb_func_start sub_8093750 +sub_8093750: @ 8093750 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DC13 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093768 + movs r4, 0 +_08093768: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8093750 + + thumb_func_start sub_809377C +sub_809377C: @ 809377C + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DC18 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _08093794 + movs r4, 0 +_08093794: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_809377C + + thumb_func_start sub_80937A8 +sub_80937A8: @ 80937A8 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DC1D + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080937C0 + movs r4, 0 +_080937C0: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80937A8 + + thumb_func_start d2s_08064034 +d2s_08064034: @ 80937D4 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DC22 + mov r0, sp + movs r2, 0x5 + bl memcpy + cmp r4, 0x4 + bls _080937EC + movs r4, 0 +_080937EC: + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end d2s_08064034 + + thumb_func_start GetOppositeDirection +@ u8 GetOppositeDirection(u8 direction) +GetOppositeDirection: @ 8093800 + push {r4,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, =gUnknown_0850DC27 + mov r0, sp + movs r2, 0x8 + bl memcpy + subs r1, r4, 0x1 + lsls r0, r1, 24 + lsrs r0, 24 + cmp r0, 0x7 + bhi _08093828 + mov r2, sp + adds r0, r2, r1 + ldrb r0, [r0] + b _0809382A + .pool +_08093828: + adds r0, r4, 0 +_0809382A: + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetOppositeDirection + + thumb_func_start zffu_offset_calc +zffu_offset_calc: @ 8093834 + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, =gUnknown_0850DC2F + lsrs r0, 22 + subs r0, 0x5 + adds r1, r0 + adds r1, r2 + ldrb r0, [r1] + bx lr + .pool + thumb_func_end zffu_offset_calc + + thumb_func_start state_to_direction +state_to_direction: @ 809384C + 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 _0809386C + cmp r2, 0 + beq _0809386C + cmp r1, 0x4 + bhi _0809386C + cmp r2, 0x4 + bls _08093870 +_0809386C: + movs r0, 0 + b _08093882 +_08093870: + adds r1, r2, 0 + bl zffu_offset_calc + ldr r2, =gUnknown_0850DC3F + lsls r1, r4, 2 + subs r1, 0x5 + adds r0, r1 + adds r0, r2 + ldrb r0, [r0] +_08093882: + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end state_to_direction + + thumb_func_start FieldObjectExecSpecialAnim +@ void FieldObjectExecSpecialAnim(struct npc_state *fieldObject, struct obj *object) +FieldObjectExecSpecialAnim: @ 809388C + push {r4,lr} + adds r4, r0, 0 + ldr r2, =gUnknown_0850DC50 + 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 _080938B8 + ldrb r0, [r4] + movs r1, 0x80 + orrs r0, r1 + strb r0, [r4] +_080938B8: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end FieldObjectExecSpecialAnim + + thumb_func_start FieldObjectExecRegularAnim +@ bool8 FieldObjectExecRegularAnim(struct npc_state *fieldObject, struct obj *object) +FieldObjectExecRegularAnim: @ 80938C4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, =gUnknown_0850DC50 + 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 _080938F4 + movs r0, 0 + b _080938FE + .pool +_080938F4: + movs r0, 0xFF + strb r0, [r4, 0x1C] + movs r0, 0 + strh r0, [r5, 0x32] + movs r0, 0x1 +_080938FE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end FieldObjectExecRegularAnim + + thumb_func_start FieldObjectSetRegularAnim +@ void FieldObjectSetRegularAnim(struct npc_state *fieldObject, struct obj *object, u8 animState) +FieldObjectSetRegularAnim: @ 8093904 + movs r3, 0 + strb r2, [r0, 0x1C] + strh r3, [r1, 0x32] + bx lr + thumb_func_end FieldObjectSetRegularAnim + + thumb_func_start an_look_any +@ void an_look_any(struct npc_state *fieldObject, struct obj *object, u8 direction) +an_look_any: @ 809390C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r1, r2, 24 + lsrs r1, 24 + bl FieldObjectSetDirection + 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_8093950 +sub_8093950: @ 8093950 + push {lr} + movs r2, 0x1 + bl an_look_any + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8093950 + + thumb_func_start sub_8093960 +sub_8093960: @ 8093960 + push {lr} + movs r2, 0x2 + bl an_look_any + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8093960 + + thumb_func_start sub_8093970 +sub_8093970: @ 8093970 + push {lr} + movs r2, 0x3 + bl an_look_any + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8093970 + + thumb_func_start sub_8093980 +sub_8093980: @ 8093980 + push {lr} + movs r2, 0x4 + bl an_look_any + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8093980 + + thumb_func_start npc_apply_direction +@ void npc_apply_direction(struct npc_state *fieldObject, struct obj *object, u8 direction, u8 speed) +npc_apply_direction: @ 8093990 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r7, r0, 0 + mov r8, r1 + adds r4, r2, 0 + adds r6, r3, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r6, 24 + lsrs r6, 24 + ldrh r1, [r7, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r7, 0x12] + mov r5, sp + adds r5, 0x2 + strh r0, [r5] + adds r0, r7, 0 + adds r1, r4, 0 + bl FieldObjectSetDirection + 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] + adds r0, r7, 0 + bl npc_coords_shift + mov r0, r8 + adds r1, r4, 0 + adds r2, r6, 0 + bl oamt_npc_ministep_reset + mov r4, r8 + adds r4, 0x2C + ldrb r1, [r4] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldr r0, =0x020375b8 + ldr r0, [r0] + cmp r0, 0 + beq _08093A0E + adds r0, r7, 0 + bl sub_8097F78 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _08093A0E + ldrb r0, [r4] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r4] +_08093A0E: + ldrb r0, [r7] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r7] + movs r0, 0x1 + mov r1, r8 + strh r0, [r1, 0x32] + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end npc_apply_direction + + thumb_func_start do_go_anim +@ void do_go_anim(struct npc_state *fieldObject, struct obj *object, u8 direction, u8 speed) +do_go_anim: @ 8093A2C + 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, =gUnknown_0850DEE8 + 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 npc_apply_direction + 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 + .pool + thumb_func_end do_go_anim + + thumb_func_start do_run_anim +@ void do_run_anim(struct npc_state *fieldObject, struct obj *object, u8 direction) +do_run_anim: @ 8093A88 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + movs r3, 0x1 + bl npc_apply_direction + 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 +@ bool8 npc_obj_ministep_stop_on_arrival(struct npc_state *fieldObject, struct obj *object) +npc_obj_ministep_stop_on_arrival: @ 8093AB8 + 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 _08093ACE + movs r0, 0 + b _08093AEA +_08093ACE: + 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 +_08093AEA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end npc_obj_ministep_stop_on_arrival + + thumb_func_start sub_8093AF0 +@ void sub_8093AF0(struct npc_state *fieldObject, struct obj *object, u8 direction) +sub_8093AF0: @ 8093AF0 + 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 FieldObjectSetDirection + 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_80976DC + 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_8093AF0 + + thumb_func_start sub_8093B60 +@ void sub_8093B60(struct npc_state *fieldObject, struct obj *object, u8 direction) +sub_8093B60: @ 8093B60 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r2, 24 + lsrs r2, 24 + bl sub_8093AF0 + 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_8093B60 + + thumb_func_start an_walk_any_2 +@ bool8 an_walk_any_2(struct npc_state *fieldObject, struct obj *object) +an_walk_any_2: @ 8093B8C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_80976EC + lsls r0, 24 + cmp r0, 0 + bne _08093BA2 + movs r0, 0 + b _08093BBE +_08093BA2: + 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 +_08093BBE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end an_walk_any_2 + + thumb_func_start sub_8093BC4 +sub_8093BC4: @ 8093BC4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x7 + bl sub_8093B60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093BE4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093BC4 + + thumb_func_start sub_8093BE4 +sub_8093BE4: @ 8093BE4 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08093BF6 + movs r0, 0 + b _08093BFC +_08093BF6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093BFC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093BE4 + + thumb_func_start sub_8093C04 +sub_8093C04: @ 8093C04 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x8 + bl sub_8093B60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093C24 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093C04 + + thumb_func_start sub_8093C24 +sub_8093C24: @ 8093C24 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08093C36 + movs r0, 0 + b _08093C3C +_08093C36: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093C3C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093C24 + + thumb_func_start sub_8093C44 +sub_8093C44: @ 8093C44 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x5 + bl sub_8093B60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093C64 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093C44 + + thumb_func_start sub_8093C64 +sub_8093C64: @ 8093C64 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08093C76 + movs r0, 0 + b _08093C7C +_08093C76: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093C7C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093C64 + + thumb_func_start sub_8093C84 +sub_8093C84: @ 8093C84 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x6 + bl sub_8093B60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093CA4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093C84 + + thumb_func_start sub_8093CA4 +sub_8093CA4: @ 8093CA4 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08093CB6 + movs r0, 0 + b _08093CBC +_08093CB6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093CBC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093CA4 + + thumb_func_start sub_8093CC4 +@ bool8 sub_8093CC4(struct npc_state *fieldObject, struct obj *object) +sub_8093CC4: @ 8093CC4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8093B60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093CE4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093CC4 + + thumb_func_start sub_8093CE4 +@ bool8 sub_8093CE4(struct npc_state *fieldObject, struct obj *object) +sub_8093CE4: @ 8093CE4 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08093CF6 + movs r0, 0 + b _08093CFC +_08093CF6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093CFC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093CE4 + + thumb_func_start sub_8093D04 +sub_8093D04: @ 8093D04 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8093B60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093D24 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093D04 + + thumb_func_start sub_8093D24 +sub_8093D24: @ 8093D24 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08093D36 + movs r0, 0 + b _08093D3C +_08093D36: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093D3C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093D24 + + thumb_func_start sub_8093D44 +sub_8093D44: @ 8093D44 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8093B60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093D64 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093D44 + + thumb_func_start sub_8093D64 +sub_8093D64: @ 8093D64 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08093D76 + movs r0, 0 + b _08093D7C +_08093D76: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093D7C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093D64 + + thumb_func_start sub_8093D84 +sub_8093D84: @ 8093D84 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8093B60 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093DA4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093D84 + + thumb_func_start sub_8093DA4 +sub_8093DA4: @ 8093DA4 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08093DB6 + movs r0, 0 + b _08093DBC +_08093DB6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093DBC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093DA4 + + thumb_func_start sub_8093DC4 +sub_8093DC4: @ 8093DC4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x7 + movs r3, 0 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093DE4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093DC4 + + thumb_func_start sub_8093DE4 +@ bool8 sub_8093DE4(struct npc_state *fieldObject, struct obj *object) +sub_8093DE4: @ 8093DE4 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08093DF6 + movs r0, 0 + b _08093DFC +_08093DF6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093DFC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093DE4 + + thumb_func_start sub_8093E04 +sub_8093E04: @ 8093E04 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x8 + movs r3, 0 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093E24 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093E04 + + thumb_func_start sub_8093E24 +sub_8093E24: @ 8093E24 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08093E36 + movs r0, 0 + b _08093E3C +_08093E36: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093E3C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093E24 + + thumb_func_start sub_8093E44 +sub_8093E44: @ 8093E44 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x5 + movs r3, 0 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093E64 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093E44 + + thumb_func_start sub_8093E64 +sub_8093E64: @ 8093E64 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08093E76 + movs r0, 0 + b _08093E7C +_08093E76: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093E7C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093E64 + + thumb_func_start sub_8093E84 +sub_8093E84: @ 8093E84 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x6 + movs r3, 0 + bl do_go_anim + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8093EA4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093E84 + + thumb_func_start sub_8093EA4 +sub_8093EA4: @ 8093EA4 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08093EB6 + movs r0, 0 + b _08093EBC +_08093EB6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093EBC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093EA4 + + thumb_func_start sub_8093EC4 +sub_8093EC4: @ 8093EC4 + 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_8093EE4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093EC4 + + thumb_func_start sub_8093EE4 +sub_8093EE4: @ 8093EE4 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08093EF6 + movs r0, 0 + b _08093EFC +_08093EF6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093EFC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093EE4 + + thumb_func_start sub_8093F04 +sub_8093F04: @ 8093F04 + 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_8093F24 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093F04 + + thumb_func_start sub_8093F24 +sub_8093F24: @ 8093F24 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08093F36 + movs r0, 0 + b _08093F3C +_08093F36: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093F3C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093F24 + + thumb_func_start sub_8093F44 +sub_8093F44: @ 8093F44 + 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_8093F64 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093F44 + + thumb_func_start sub_8093F64 +sub_8093F64: @ 8093F64 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08093F76 + movs r0, 0 + b _08093F7C +_08093F76: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093F7C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093F64 + + thumb_func_start sub_8093F84 +sub_8093F84: @ 8093F84 + 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_8093FA4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8093F84 + + thumb_func_start sub_8093FA4 +sub_8093FA4: @ 8093FA4 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08093FB6 + movs r0, 0 + b _08093FBC +_08093FB6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08093FBC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8093FA4 + + thumb_func_start sub_8093FC4 +sub_8093FC4: @ 8093FC4 + 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, =gUnknown_0850DFBC + 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 FieldObjectSetDirection + 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_8092F88 + 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_809783C + 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 + .pool + thumb_func_end sub_8093FC4 + + thumb_func_start maybe_shadow_1 +maybe_shadow_1: @ 8094080 + 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_8093FC4 + 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_80940C4 +@ int sub_80940C4(int a1, int a2, int a3) +sub_80940C4: @ 80940C4 + 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, =gUnknown_0850DFC2 + 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 _08094154 + 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 _08094154 + 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_8092F88 + 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 _08094178 + .pool +_08094154: + mov r1, r8 + cmp r1, 0xFF + bne _08094178 + 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] +_08094178: + mov r0, r8 + add sp, 0x10 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80940C4 + + thumb_func_start sub_8094188 +sub_8094188: @ 8094188 + push {lr} + ldr r2, =sub_809785C + bl sub_80940C4 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .pool + thumb_func_end sub_8094188 + + thumb_func_start sub_809419C +sub_809419C: @ 809419C + push {lr} + ldr r2, =sub_80978E4 + bl sub_80940C4 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .pool + thumb_func_end sub_809419C + + thumb_func_start sub_80941B0 +sub_80941B0: @ 80941B0 + push {lr} + bl sub_8094188 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080941C2 + movs r0, 0 + b _080941C4 +_080941C2: + movs r0, 0x1 +_080941C4: + pop {r1} + bx r1 + thumb_func_end sub_80941B0 + + thumb_func_start sub_80941C8 +sub_80941C8: @ 80941C8 + push {lr} + bl sub_809419C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xFF + beq _080941DA + movs r0, 0 + b _080941DC +_080941DA: + movs r0, 0x1 +_080941DC: + pop {r1} + bx r1 + thumb_func_end sub_80941C8 + + thumb_func_start sub_80941E0 +sub_80941E0: @ 80941E0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8094188 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080941FA + cmp r0, 0xFF + bne _08094226 + movs r0, 0x1 + b _08094228 +_080941FA: + ldrb r0, [r4, 0x18] + lsrs r0, 4 + bl GetOppositeDirection + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetDirection + 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 +_08094226: + movs r0, 0 +_08094228: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80941E0 + + thumb_func_start sub_8094230 +sub_8094230: @ 8094230 + 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_809425C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094230 + + thumb_func_start sub_809425C +sub_809425C: @ 809425C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08094270 + movs r0, 0 + b _08094280 +_08094270: + 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 +_08094280: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809425C + + thumb_func_start sub_8094288 +sub_8094288: @ 8094288 + 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_80942B4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094288 + + thumb_func_start sub_80942B4 +sub_80942B4: @ 80942B4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _080942C8 + movs r0, 0 + b _080942D8 +_080942C8: + 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 +_080942D8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80942B4 + + thumb_func_start sub_80942E0 +sub_80942E0: @ 80942E0 + 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_809430C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80942E0 + + thumb_func_start sub_809430C +sub_809430C: @ 809430C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08094320 + movs r0, 0 + b _08094330 +_08094320: + 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 +_08094330: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809430C + + thumb_func_start sub_8094338 +sub_8094338: @ 8094338 + 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_8094364 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094338 + + thumb_func_start sub_8094364 +sub_8094364: @ 8094364 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08094378 + movs r0, 0 + b _08094388 +_08094378: + 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 +_08094388: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094364 + + thumb_func_start sub_8094390 +sub_8094390: @ 8094390 + movs r2, 0x1 + strh r2, [r0, 0x32] + strh r1, [r0, 0x34] + bx lr + thumb_func_end sub_8094390 + + thumb_func_start sub_8094398 +sub_8094398: @ 8094398 + push {lr} + ldrh r0, [r1, 0x34] + subs r0, 0x1 + strh r0, [r1, 0x34] + lsls r0, 16 + cmp r0, 0 + beq _080943AA + movs r0, 0 + b _080943B0 +_080943AA: + movs r0, 0x2 + strh r0, [r1, 0x32] + movs r0, 0x1 +_080943B0: + pop {r1} + bx r1 + thumb_func_end sub_8094398 + + thumb_func_start sub_80943B4 +sub_80943B4: @ 80943B4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8094390 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8094398 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80943B4 + + thumb_func_start sub_80943D4 +sub_80943D4: @ 80943D4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x2 + bl sub_8094390 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8094398 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80943D4 + + thumb_func_start sub_80943F4 +sub_80943F4: @ 80943F4 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x4 + bl sub_8094390 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8094398 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80943F4 + + thumb_func_start sub_8094414 +sub_8094414: @ 8094414 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x8 + bl sub_8094390 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8094398 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094414 + + thumb_func_start sub_8094434 +sub_8094434: @ 8094434 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r0, r4, 0 + movs r1, 0x10 + bl sub_8094390 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8094398 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094434 + + thumb_func_start sub_8094454 +sub_8094454: @ 8094454 + 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_8094474 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094454 + + thumb_func_start sub_8094474 +sub_8094474: @ 8094474 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094486 + movs r0, 0 + b _0809448C +_08094486: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0809448C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094474 + + thumb_func_start sub_8094494 +sub_8094494: @ 8094494 + 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_80944B4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094494 + + thumb_func_start sub_80944B4 +sub_80944B4: @ 80944B4 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080944C6 + movs r0, 0 + b _080944CC +_080944C6: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080944CC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80944B4 + + thumb_func_start sub_80944D4 +sub_80944D4: @ 80944D4 + 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_80944F4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80944D4 + + thumb_func_start sub_80944F4 +sub_80944F4: @ 80944F4 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094506 + movs r0, 0 + b _0809450C +_08094506: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0809450C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80944F4 + + thumb_func_start sub_8094514 +sub_8094514: @ 8094514 + 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_8094534 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094514 + + thumb_func_start sub_8094534 +sub_8094534: @ 8094534 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094546 + movs r0, 0 + b _0809454C +_08094546: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_0809454C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094534 + + thumb_func_start sub_8094554 +sub_8094554: @ 8094554 + 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 FieldObjectSetDirection + 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_8094554 + + thumb_func_start sub_809459C +@ signed int sub_809459C(int a1, obj *a2) +sub_809459C: @ 809459C + push {lr} + ldrh r0, [r1, 0x34] + subs r0, 0x1 + strh r0, [r1, 0x34] + lsls r0, 16 + cmp r0, 0 + beq _080945AE + movs r0, 0 + b _080945C0 +_080945AE: + 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 +_080945C0: + pop {r1} + bx r1 + thumb_func_end sub_809459C + + thumb_func_start sub_80945C4 +@ int sub_80945C4(int a1, obj *a2) +sub_80945C4: @ 80945C4 + 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 _080945EE + 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] +_080945EE: + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80945C4 + + thumb_func_start sub_8094600 +sub_8094600: @ 8094600 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80945C4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094600 + + thumb_func_start sub_8094638 +sub_8094638: @ 8094638 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80945C4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094638 + + thumb_func_start sub_8094670 +sub_8094670: @ 8094670 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80945C4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094670 + + thumb_func_start sub_80946A8 +sub_80946A8: @ 80946A8 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80945C4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80946A8 + + thumb_func_start sub_80946E0 +sub_80946E0: @ 80946E0 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80946E0 + + thumb_func_start sub_8094718 +sub_8094718: @ 8094718 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094718 + + thumb_func_start sub_8094750 +sub_8094750: @ 8094750 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094750 + + thumb_func_start sub_8094788 +sub_8094788: @ 8094788 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094788 + + thumb_func_start sub_80947C0 +sub_80947C0: @ 80947C0 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80947C0 + + thumb_func_start sub_80947F8 +sub_80947F8: @ 80947F8 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80947F8 + + thumb_func_start sub_8094830 +sub_8094830: @ 8094830 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094830 + + thumb_func_start sub_8094868 +sub_8094868: @ 8094868 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094868 + + thumb_func_start sub_80948A0 +sub_80948A0: @ 80948A0 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80948A0 + + thumb_func_start sub_80948D8 +sub_80948D8: @ 80948D8 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80948D8 + + thumb_func_start sub_8094910 +sub_8094910: @ 8094910 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094910 + + thumb_func_start sub_8094948 +sub_8094948: @ 8094948 + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094948 + + thumb_func_start sub_8094980 +sub_8094980: @ 8094980 + 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_80949A0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094980 + + thumb_func_start sub_80949A0 +sub_80949A0: @ 80949A0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080949B2 + movs r0, 0 + b _080949B8 +_080949B2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080949B8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80949A0 + + thumb_func_start sub_80949C0 +sub_80949C0: @ 80949C0 + 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_80949E0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80949C0 + + thumb_func_start sub_80949E0 +sub_80949E0: @ 80949E0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080949F2 + movs r0, 0 + b _080949F8 +_080949F2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080949F8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80949E0 + + thumb_func_start sub_8094A00 +sub_8094A00: @ 8094A00 + 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_8094A20 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094A00 + + thumb_func_start sub_8094A20 +sub_8094A20: @ 8094A20 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094A32 + movs r0, 0 + b _08094A38 +_08094A32: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094A38: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094A20 + + thumb_func_start sub_8094A40 +sub_8094A40: @ 8094A40 + 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_8094A60 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094A40 + + thumb_func_start sub_8094A60 +sub_8094A60: @ 8094A60 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094A72 + movs r0, 0 + b _08094A78 +_08094A72: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094A78: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094A60 + + thumb_func_start sub_8094A80 +sub_8094A80: @ 8094A80 + 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_8094AA0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094A80 + + thumb_func_start sub_8094AA0 +sub_8094AA0: @ 8094AA0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094AB2 + movs r0, 0 + b _08094AB8 +_08094AB2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094AB8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094AA0 + + thumb_func_start sub_8094AC0 +sub_8094AC0: @ 8094AC0 + 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_8094AE0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094AC0 + + thumb_func_start sub_8094AE0 +sub_8094AE0: @ 8094AE0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094AF2 + movs r0, 0 + b _08094AF8 +_08094AF2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094AF8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094AE0 + + thumb_func_start sub_8094B00 +sub_8094B00: @ 8094B00 + 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_8094B20 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094B00 + + thumb_func_start sub_8094B20 +sub_8094B20: @ 8094B20 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094B32 + movs r0, 0 + b _08094B38 +_08094B32: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094B38: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094B20 + + thumb_func_start sub_8094B40 +sub_8094B40: @ 8094B40 + 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_8094B60 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094B40 + + thumb_func_start sub_8094B60 +sub_8094B60: @ 8094B60 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094B72 + movs r0, 0 + b _08094B78 +_08094B72: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094B78: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094B60 + + thumb_func_start sub_8094B80 +sub_8094B80: @ 8094B80 + 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_8094BA0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094B80 + + thumb_func_start sub_8094BA0 +sub_8094BA0: @ 8094BA0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094BB2 + movs r0, 0 + b _08094BB8 +_08094BB2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094BB8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094BA0 + + thumb_func_start sub_8094BC0 +sub_8094BC0: @ 8094BC0 + 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_8094BE0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094BC0 + + thumb_func_start sub_8094BE0 +sub_8094BE0: @ 8094BE0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094BF2 + movs r0, 0 + b _08094BF8 +_08094BF2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094BF8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094BE0 + + thumb_func_start sub_8094C00 +sub_8094C00: @ 8094C00 + 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_8094C20 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094C00 + + thumb_func_start sub_8094C20 +sub_8094C20: @ 8094C20 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094C32 + movs r0, 0 + b _08094C38 +_08094C32: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094C38: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094C20 + + thumb_func_start sub_8094C40 +sub_8094C40: @ 8094C40 + 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_8094C60 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094C40 + + thumb_func_start sub_8094C60 +sub_8094C60: @ 8094C60 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094C72 + movs r0, 0 + b _08094C78 +_08094C72: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094C78: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094C60 + + thumb_func_start do_run_south_anim +@ bool8 do_run_south_anim(struct npc_state *fieldObject, struct obj *object) +do_run_south_anim: @ 8094C80 + 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_8094CA0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end do_run_south_anim + + thumb_func_start sub_8094CA0 +@ bool8 sub_8094CA0(struct npc_state *fieldObject, struct obj *object) +sub_8094CA0: @ 8094CA0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094CB2 + movs r0, 0 + b _08094CB8 +_08094CB2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094CB8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094CA0 + + thumb_func_start do_run_north_anim +do_run_north_anim: @ 8094CC0 + 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_8094CE0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end do_run_north_anim + + thumb_func_start sub_8094CE0 +sub_8094CE0: @ 8094CE0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094CF2 + movs r0, 0 + b _08094CF8 +_08094CF2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094CF8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094CE0 + + thumb_func_start do_run_west_anim +do_run_west_anim: @ 8094D00 + 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_8094D20 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end do_run_west_anim + + thumb_func_start sub_8094D20 +sub_8094D20: @ 8094D20 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094D32 + movs r0, 0 + b _08094D38 +_08094D32: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094D38: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094D20 + + thumb_func_start do_run_east_anim +do_run_east_anim: @ 8094D40 + 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_8094D60 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end do_run_east_anim + + thumb_func_start sub_8094D60 +sub_8094D60: @ 8094D60 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08094D72 + movs r0, 0 + b _08094D78 +_08094D72: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094D78: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094D60 + + thumb_func_start npc_set_direction_and_anim__an_proceed +npc_set_direction_and_anim__an_proceed: @ 8094D80 + 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 FieldObjectSetDirection + 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_8094DAC +sub_8094DAC: @ 8094DAC + 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_8094DAC + + thumb_func_start sub_8094DC4 +sub_8094DC4: @ 8094DC4 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_80979BC + lsls r0, 24 + cmp r0, 0 + bne _08094DD8 + movs r0, 0 + b _08094DDE +_08094DD8: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08094DDE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8094DC4 + + thumb_func_start sub_8094DE4 +sub_8094DE4: @ 8094DE4 + 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_8093FC4 + adds r0, r4, 0 + bl sub_80929AC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartObjectImageAnim + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8094DE4 + + thumb_func_start sub_8094E18 +sub_8094E18: @ 8094E18 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + bl sub_8094DE4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8094E38 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094E18 + + thumb_func_start sub_8094E38 +sub_8094E38: @ 8094E38 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941C8 + lsls r0, 24 + cmp r0, 0 + bne _08094E4C + movs r0, 0 + b _08094E5A +_08094E4C: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_08094E5A: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094E38 + + thumb_func_start sub_8094E60 +sub_8094E60: @ 8094E60 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + bl sub_8094DE4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8094E80 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094E60 + + thumb_func_start sub_8094E80 +sub_8094E80: @ 8094E80 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941C8 + lsls r0, 24 + cmp r0, 0 + bne _08094E94 + movs r0, 0 + b _08094EA2 +_08094E94: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_08094EA2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094E80 + + thumb_func_start sub_8094EA8 +sub_8094EA8: @ 8094EA8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + bl sub_8094DE4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8094EC8 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094EA8 + + thumb_func_start sub_8094EC8 +sub_8094EC8: @ 8094EC8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941C8 + lsls r0, 24 + cmp r0, 0 + bne _08094EDC + movs r0, 0 + b _08094EEA +_08094EDC: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_08094EEA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094EC8 + + thumb_func_start sub_8094EF0 +sub_8094EF0: @ 8094EF0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8094DE4 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8094F10 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094EF0 + + thumb_func_start sub_8094F10 +sub_8094F10: @ 8094F10 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941C8 + lsls r0, 24 + cmp r0, 0 + bne _08094F24 + movs r0, 0 + b _08094F32 +_08094F24: + movs r0, 0x2 + strh r0, [r5, 0x32] + ldrb r1, [r4] + subs r0, 0x23 + ands r0, r1 + strb r0, [r4] + movs r0, 0x1 +_08094F32: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8094F10 + + thumb_func_start sub_8094F38 +sub_8094F38: @ 8094F38 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _08094F82 + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + ldr r4, =0x02037350 + 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_8092AF8 + adds r2, r0, 0 + lsls r2, 24 + lsrs r2, 24 + adds r0, r5, 0 + adds r1, r6, 0 + bl an_look_any +_08094F82: + movs r0, 0x1 + strh r0, [r6, 0x32] + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8094F38 + + thumb_func_start sub_8094F94 +sub_8094F94: @ 8094F94 + 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 TryGetFieldObjectIdByLocalIdAndMap + lsls r0, 24 + cmp r0, 0 + bne _08094FE6 + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + ldr r4, =0x02037350 + 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_8092AF8 + 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 +_08094FE6: + movs r0, 0x1 + strh r0, [r6, 0x32] + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8094F94 + + thumb_func_start sub_8094FF8 +sub_8094FF8: @ 8094FF8 + 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_8094FF8 + + thumb_func_start sub_8095008 +sub_8095008: @ 8095008 + 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_8095008 + + thumb_func_start sub_8095018 +sub_8095018: @ 8095018 + 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_8095044 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095018 + + thumb_func_start sub_8095044 +sub_8095044: @ 8095044 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095058 + movs r0, 0 + b _08095068 +_08095058: + 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 +_08095068: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095044 + + thumb_func_start sub_8095070 +sub_8095070: @ 8095070 + 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_809509C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095070 + + thumb_func_start sub_809509C +sub_809509C: @ 809509C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _080950B0 + movs r0, 0 + b _080950C0 +_080950B0: + 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 +_080950C0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809509C + + thumb_func_start sub_80950C8 +sub_80950C8: @ 80950C8 + 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_80950F4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80950C8 + + thumb_func_start sub_80950F4 +sub_80950F4: @ 80950F4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095108 + movs r0, 0 + b _08095118 +_08095108: + 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 +_08095118: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80950F4 + + thumb_func_start sub_8095120 +sub_8095120: @ 8095120 + 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_809514C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095120 + + thumb_func_start sub_809514C +sub_809514C: @ 809514C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095160 + movs r0, 0 + b _08095170 +_08095160: + 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 +_08095170: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809514C + + thumb_func_start sub_8095178 +sub_8095178: @ 8095178 + 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_80951A4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095178 + + thumb_func_start sub_80951A4 +sub_80951A4: @ 80951A4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _080951B8 + movs r0, 0 + b _080951C8 +_080951B8: + 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 +_080951C8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80951A4 + + thumb_func_start sub_80951D0 +sub_80951D0: @ 80951D0 + 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_80951FC + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80951D0 + + thumb_func_start sub_80951FC +sub_80951FC: @ 80951FC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095210 + movs r0, 0 + b _08095220 +_08095210: + 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 +_08095220: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80951FC + + thumb_func_start sub_8095228 +sub_8095228: @ 8095228 + 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_8095254 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095228 + + thumb_func_start sub_8095254 +sub_8095254: @ 8095254 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095268 + movs r0, 0 + b _08095278 +_08095268: + 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 +_08095278: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095254 + + thumb_func_start sub_8095280 +sub_8095280: @ 8095280 + 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_80952AC + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095280 + + thumb_func_start sub_80952AC +sub_80952AC: @ 80952AC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _080952C0 + movs r0, 0 + b _080952D0 +_080952C0: + 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 +_080952D0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80952AC + + thumb_func_start sub_80952D8 +sub_80952D8: @ 80952D8 + 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_8095304 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80952D8 + + thumb_func_start sub_8095304 +sub_8095304: @ 8095304 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941E0 + lsls r0, 24 + cmp r0, 0 + bne _08095318 + movs r0, 0 + b _08095328 +_08095318: + 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 +_08095328: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095304 + + thumb_func_start sub_8095330 +sub_8095330: @ 8095330 + 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_809535C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095330 + + thumb_func_start sub_809535C +sub_809535C: @ 809535C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941E0 + lsls r0, 24 + cmp r0, 0 + bne _08095370 + movs r0, 0 + b _08095380 +_08095370: + 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 +_08095380: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809535C + + thumb_func_start sub_8095388 +sub_8095388: @ 8095388 + 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_80953B4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095388 + + thumb_func_start sub_80953B4 +sub_80953B4: @ 80953B4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941E0 + lsls r0, 24 + cmp r0, 0 + bne _080953C8 + movs r0, 0 + b _080953D8 +_080953C8: + 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 +_080953D8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80953B4 + + thumb_func_start sub_80953E0 +sub_80953E0: @ 80953E0 + 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_809540C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80953E0 + + thumb_func_start sub_809540C +sub_809540C: @ 809540C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941E0 + lsls r0, 24 + cmp r0, 0 + bne _08095420 + movs r0, 0 + b _08095430 +_08095420: + 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 +_08095430: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809540C + + thumb_func_start sub_8095438 +sub_8095438: @ 8095438 + push {lr} + ldr r3, =gUnknown_085055CD + ldrb r2, [r0, 0x6] + adds r2, r3 + ldrb r2, [r2] + bl an_look_any + movs r0, 0x1 + pop {r1} + bx r1 + .pool + thumb_func_end sub_8095438 + + thumb_func_start sub_8095450 +sub_8095450: @ 8095450 + 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_8095450 + + thumb_func_start sub_8095460 +sub_8095460: @ 8095460 + 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_8095460 + + thumb_func_start sub_8095470 +sub_8095470: @ 8095470 + 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_8095470 + + thumb_func_start sub_8095480 +sub_8095480: @ 8095480 + 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_8095480 + + thumb_func_start sub_8095490 +@ int sub_8095490(npc_state *npcState, int a2) +sub_8095490: @ 8095490 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x5] + bl GetFieldObjectGraphicsInfo + 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_8095490 + + thumb_func_start sub_80954BC +sub_80954BC: @ 80954BC + 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_80954BC + + thumb_func_start sub_80954CC +sub_80954CC: @ 80954CC + 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_80954CC + + thumb_func_start do_exclamation_mark_bubble_1 +do_exclamation_mark_bubble_1: @ 80954DC + push {r4,lr} + adds r4, r1, 0 + ldr r1, =0x02038c08 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl FieldObjectGetLocalIdAndMap + movs r0, 0 + bl FieldEffectStart + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end do_exclamation_mark_bubble_1 + + thumb_func_start do_exclamation_mark_bubble_2 +do_exclamation_mark_bubble_2: @ 8095500 + push {r4,lr} + adds r4, r1, 0 + ldr r1, =0x02038c08 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl FieldObjectGetLocalIdAndMap + movs r0, 0x21 + bl FieldEffectStart + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end do_exclamation_mark_bubble_2 + + thumb_func_start do_heart_bubble +do_heart_bubble: @ 8095524 + push {r4,lr} + adds r4, r1, 0 + ldr r1, =0x02038c08 + adds r2, r1, 0x4 + adds r3, r1, 0 + adds r3, 0x8 + bl FieldObjectGetLocalIdAndMap + movs r0, 0x2E + bl FieldEffectStart + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end do_heart_bubble + + thumb_func_start sub_8095548 +sub_8095548: @ 8095548 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x6] + cmp r0, 0x3F + bne _0809555E + adds r0, r4, 0 + bl sub_80B4578 + movs r0, 0 + b _08095586 +_0809555E: + subs r0, 0x39 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _08095580 + adds r0, r4, 0 + bl sub_8155D78 + movs r0, 0x1 + strh r0, [r5, 0x32] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809558C + lsls r0, 24 + lsrs r0, 24 + b _08095586 +_08095580: + movs r0, 0x2 + strh r0, [r5, 0x32] + movs r0, 0x1 +_08095586: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095548 + + thumb_func_start sub_809558C +sub_809558C: @ 809558C + push {r4,lr} + adds r4, r1, 0 + bl sub_8155DA0 + lsls r0, 24 + cmp r0, 0 + bne _0809559E + movs r0, 0 + b _080955A4 +_0809559E: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080955A4: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809558C + + thumb_func_start sub_80955AC +sub_80955AC: @ 80955AC + 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_80955AC + + thumb_func_start sub_80955C8 +sub_80955C8: @ 80955C8 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_80979BC + lsls r0, 24 + cmp r0, 0 + beq _080955E4 + adds r0, r4, 0 + movs r1, 0x20 + bl sub_8097978 + movs r0, 0x2 + strh r0, [r4, 0x32] +_080955E4: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80955C8 + + thumb_func_start sub_80955EC +sub_80955EC: @ 80955EC + 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 sub_809797C + lsls r0, 24 + cmp r0, 0 + beq _0809561E + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x3 + strh r0, [r5, 0x32] +_0809561E: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80955EC + + thumb_func_start sub_8095628 +sub_8095628: @ 8095628 + 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_8095628 + + thumb_func_start sub_8095644 +sub_8095644: @ 8095644 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_80979BC + lsls r0, 24 + cmp r0, 0 + beq _08095660 + adds r0, r4, 0 + movs r1, 0x20 + bl sub_8097978 + movs r0, 0x2 + strh r0, [r4, 0x32] +_08095660: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8095644 + + thumb_func_start sub_8095668 +sub_8095668: @ 8095668 + 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 sub_809797C + lsls r0, 24 + cmp r0, 0 + beq _0809569A + ldrb r0, [r4, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x3 + strh r0, [r5, 0x32] +_0809569A: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095668 + + thumb_func_start sub_80956A4 +sub_80956A4: @ 80956A4 + 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_80956A4 + + thumb_func_start sub_80956B4 +sub_80956B4: @ 80956B4 + 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_80956B4 + + thumb_func_start sub_80956C4 +sub_80956C4: @ 80956C4 + 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 obj_alloc_rotscale_entry + 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_80956C4 + + thumb_func_start sub_80956F4 +sub_80956F4: @ 80956F4 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r4, 0x3] + lsls r0, 26 + lsrs r0, 27 + bl rotscale_free_entry + 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 CalcVecFromObjectCenterToObjectUpperLeft + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80956F4 + + thumb_func_start sub_8095724 +sub_8095724: @ 8095724 + ldrb r1, [r0, 0x3] + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0, 0x3] + movs r0, 0x1 + bx lr + thumb_func_end sub_8095724 + + thumb_func_start sub_8095730 +sub_8095730: @ 8095730 + ldrb r2, [r0, 0x3] + movs r1, 0x9 + negs r1, r1 + ands r1, r2 + strb r1, [r0, 0x3] + movs r0, 0x1 + bx lr + thumb_func_end sub_8095730 + + thumb_func_start sub_8095740 +sub_8095740: @ 8095740 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8093B60 + 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 StartObjectRotScalAnimIfDifferent + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8095774 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095740 + + thumb_func_start sub_8095774 +sub_8095774: @ 8095774 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _08095786 + movs r0, 0 + b _08095798 +_08095786: + 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 +_08095798: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8095774 + + thumb_func_start sub_80957A0 +sub_80957A0: @ 80957A0 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x1 + bl sub_8093B60 + 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 sub_80082F0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_80957D4 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80957A0 + + thumb_func_start sub_80957D4 +sub_80957D4: @ 80957D4 + push {r4,lr} + adds r4, r1, 0 + bl an_walk_any_2 + lsls r0, 24 + cmp r0, 0 + bne _080957E6 + movs r0, 0 + b _080957F8 +_080957E6: + 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 +_080957F8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80957D4 + + thumb_func_start sub_8095800 +sub_8095800: @ 8095800 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl do_go_anim + 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, 0x2 + bl sub_80082F0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8095834 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095800 + + thumb_func_start sub_8095834 +sub_8095834: @ 8095834 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08095846 + movs r0, 0 + b _08095858 +_08095846: + 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 +_08095858: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8095834 + + thumb_func_start sub_8095860 +sub_8095860: @ 8095860 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl do_go_anim + 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, 0x3 + bl sub_80082F0 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8095894 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095860 + + thumb_func_start sub_8095894 +sub_8095894: @ 8095894 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080958A6 + movs r0, 0 + b _080958B8 +_080958A6: + 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 +_080958B8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8095894 + + thumb_func_start sub_80958C0 +sub_80958C0: @ 80958C0 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + lsls r4, r2, 24 + lsrs r4, 24 + adds r1, r4, 0 + bl FieldObjectSetDirection + adds r0, r5, 0 + bl npc_coords_shift_still + adds r0, r4, 0 + bl sub_80929FC + 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_80958C0 + + thumb_func_start sub_8095900 +sub_8095900: @ 8095900 + push {lr} + movs r2, 0x1 + bl sub_80958C0 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8095900 + + thumb_func_start sub_8095910 +sub_8095910: @ 8095910 + push {lr} + movs r2, 0x2 + bl sub_80958C0 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8095910 + + thumb_func_start sub_8095920 +sub_8095920: @ 8095920 + push {lr} + movs r2, 0x3 + bl sub_80958C0 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8095920 + + thumb_func_start sub_8095930 +sub_8095930: @ 8095930 + push {lr} + movs r2, 0x4 + bl sub_80958C0 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8095930 + + thumb_func_start sub_8095940 +sub_8095940: @ 8095940 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_80929BC + 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_8095940 + + thumb_func_start sub_8095964 +sub_8095964: @ 8095964 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_80929BC + 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_8095964 + + thumb_func_start sub_8095988 +sub_8095988: @ 8095988 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_80929BC + 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_8095988 + + thumb_func_start sub_80959AC +sub_80959AC: @ 80959AC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_80929BC + 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_80959AC + + thumb_func_start sub_80959D0 +sub_80959D0: @ 80959D0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_80929DC + 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_80959D0 + + thumb_func_start sub_80959F4 +sub_80959F4: @ 80959F4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_80929DC + 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_80959F4 + + thumb_func_start sub_8095A18 +sub_8095A18: @ 8095A18 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_80929DC + 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_8095A18 + + thumb_func_start sub_8095A3C +sub_8095A3C: @ 8095A3C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_80929DC + 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_8095A3C + + thumb_func_start sub_8095A60 +sub_8095A60: @ 8095A60 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_80929EC + 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_8095A60 + + thumb_func_start sub_8095A84 +sub_8095A84: @ 8095A84 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_80929EC + 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_8095A84 + + thumb_func_start sub_8095AA8 +sub_8095AA8: @ 8095AA8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_80929EC + 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_8095AA8 + + thumb_func_start sub_8095ACC +sub_8095ACC: @ 8095ACC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_80929EC + 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_8095ACC + + thumb_func_start sub_8095AF0 +sub_8095AF0: @ 8095AF0 + push {r4,lr} + adds r4, r1, 0 + adds r0, r4, 0 + bl sub_8097750 + adds r4, 0x2C + ldrb r1, [r4] + movs r0, 0x41 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8095AF0 + + thumb_func_start sub_8095B0C +sub_8095B0C: @ 8095B0C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl sub_8097758 + lsls r0, 24 + cmp r0, 0 + bne _08095B22 + movs r0, 0 + b _08095B3E +_08095B22: + 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 +_08095B3E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095B0C + + thumb_func_start sub_8095B44 +sub_8095B44: @ 8095B44 + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + bl sub_8095AF0 + movs r0, 0x1 + strh r0, [r4, 0x32] + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8095B64 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095B44 + + thumb_func_start sub_8095B64 +sub_8095B64: @ 8095B64 + push {r4,lr} + adds r4, r1, 0 + bl sub_8095B0C + lsls r0, 24 + cmp r0, 0 + bne _08095B76 + movs r0, 0 + b _08095B7C +_08095B76: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08095B7C: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8095B64 + + thumb_func_start sub_8095B84 +sub_8095B84: @ 8095B84 + 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_8093FC4 + adds r0, r4, 0 + bl sub_80929BC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartObjectImageAnimIfDifferent + adds r0, r6, 0 + bl DoShadowFieldEffect + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8095B84 + + thumb_func_start sub_8095BC8 +sub_8095BC8: @ 8095BC8 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095BF4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095BC8 + + thumb_func_start sub_8095BF4 +sub_8095BF4: @ 8095BF4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095C08 + movs r0, 0 + b _08095C18 +_08095C08: + 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 +_08095C18: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095BF4 + + thumb_func_start sub_8095C20 +sub_8095C20: @ 8095C20 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095C4C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095C20 + + thumb_func_start sub_8095C4C +sub_8095C4C: @ 8095C4C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095C60 + movs r0, 0 + b _08095C70 +_08095C60: + 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 +_08095C70: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095C4C + + thumb_func_start sub_8095C78 +sub_8095C78: @ 8095C78 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095CA4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095C78 + + thumb_func_start sub_8095CA4 +sub_8095CA4: @ 8095CA4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095CB8 + movs r0, 0 + b _08095CC8 +_08095CB8: + 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 +_08095CC8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095CA4 + + thumb_func_start sub_8095CD0 +sub_8095CD0: @ 8095CD0 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095CFC + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095CD0 + + thumb_func_start sub_8095CFC +sub_8095CFC: @ 8095CFC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095D10 + movs r0, 0 + b _08095D20 +_08095D10: + 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 +_08095D20: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095CFC + + thumb_func_start sub_8095D28 +sub_8095D28: @ 8095D28 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095D54 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095D28 + + thumb_func_start sub_8095D54 +sub_8095D54: @ 8095D54 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095D68 + movs r0, 0 + b _08095D78 +_08095D68: + 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 +_08095D78: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095D54 + + thumb_func_start sub_8095D80 +sub_8095D80: @ 8095D80 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095DAC + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095D80 + + thumb_func_start sub_8095DAC +sub_8095DAC: @ 8095DAC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095DC0 + movs r0, 0 + b _08095DD0 +_08095DC0: + 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 +_08095DD0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095DAC + + thumb_func_start sub_8095DD8 +sub_8095DD8: @ 8095DD8 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095E04 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095DD8 + + thumb_func_start sub_8095E04 +sub_8095E04: @ 8095E04 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095E18 + movs r0, 0 + b _08095E28 +_08095E18: + 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 +_08095E28: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095E04 + + thumb_func_start sub_8095E30 +sub_8095E30: @ 8095E30 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095E5C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095E30 + + thumb_func_start sub_8095E5C +sub_8095E5C: @ 8095E5C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095E70 + movs r0, 0 + b _08095E80 +_08095E70: + 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 +_08095E80: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095E5C + + thumb_func_start sub_8095E88 +sub_8095E88: @ 8095E88 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095EB4 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095E88 + + thumb_func_start sub_8095EB4 +sub_8095EB4: @ 8095EB4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095EC8 + movs r0, 0 + b _08095ED8 +_08095EC8: + 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 +_08095ED8: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095EB4 + + thumb_func_start sub_8095EE0 +sub_8095EE0: @ 8095EE0 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095F0C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095EE0 + + thumb_func_start sub_8095F0C +sub_8095F0C: @ 8095F0C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095F20 + movs r0, 0 + b _08095F30 +_08095F20: + 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 +_08095F30: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095F0C + + thumb_func_start sub_8095F38 +sub_8095F38: @ 8095F38 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095F64 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095F38 + + thumb_func_start sub_8095F64 +sub_8095F64: @ 8095F64 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095F78 + movs r0, 0 + b _08095F88 +_08095F78: + 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 +_08095F88: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095F64 + + thumb_func_start sub_8095F90 +sub_8095F90: @ 8095F90 + 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_8095B84 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8095FBC + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095F90 + + thumb_func_start sub_8095FBC +sub_8095FBC: @ 8095FBC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_80941B0 + lsls r0, 24 + cmp r0, 0 + bne _08095FD0 + movs r0, 0 + b _08095FE0 +_08095FD0: + 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 +_08095FE0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095FBC + + thumb_func_start sub_8095FE8 +sub_8095FE8: @ 8095FE8 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x1 + bl sub_80929FC + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095FE8 + + thumb_func_start sub_8096020 +sub_8096020: @ 8096020 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x2 + bl sub_80929FC + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096020 + + thumb_func_start sub_8096058 +sub_8096058: @ 8096058 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x3 + bl sub_80929FC + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096058 + + thumb_func_start sub_8096090 +sub_8096090: @ 8096090 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + movs r0, 0x4 + bl sub_80929FC + 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_8094554 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_809459C + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096090 + + thumb_func_start sub_80960C8 +sub_80960C8: @ 80960C8 + 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 npc_apply_direction + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_80929BC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartObjectImageAnim + adds r0, r4, 0 + movs r1, 0 + bl SeekObjectImageAnim + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80960C8 + + thumb_func_start sub_8096100 +sub_8096100: @ 8096100 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_80960C8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8096120 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096100 + + thumb_func_start sub_8096120 +sub_8096120: @ 8096120 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08096132 + movs r0, 0 + b _08096138 +_08096132: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08096138: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096120 + + thumb_func_start sub_8096140 +sub_8096140: @ 8096140 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_80960C8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8096160 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096140 + + thumb_func_start sub_8096160 +sub_8096160: @ 8096160 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08096172 + movs r0, 0 + b _08096178 +_08096172: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08096178: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096160 + + thumb_func_start sub_8096180 +sub_8096180: @ 8096180 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_80960C8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80961A0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096180 + + thumb_func_start sub_80961A0 +sub_80961A0: @ 80961A0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080961B2 + movs r0, 0 + b _080961B8 +_080961B2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080961B8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80961A0 + + thumb_func_start sub_80961C0 +sub_80961C0: @ 80961C0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_80960C8 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80961E0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80961C0 + + thumb_func_start sub_80961E0 +sub_80961E0: @ 80961E0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080961F2 + movs r0, 0 + b _080961F8 +_080961F2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080961F8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80961E0 + + thumb_func_start sub_8096200 +sub_8096200: @ 8096200 + 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 npc_apply_direction + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_80929FC + 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_8096200 + + thumb_func_start sub_8096230 +sub_8096230: @ 8096230 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8096200 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8096250 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096230 + + thumb_func_start sub_8096250 +sub_8096250: @ 8096250 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08096262 + movs r0, 0 + b _08096268 +_08096262: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08096268: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096250 + + thumb_func_start sub_8096270 +sub_8096270: @ 8096270 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8096200 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8096290 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096270 + + thumb_func_start sub_8096290 +sub_8096290: @ 8096290 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080962A2 + movs r0, 0 + b _080962A8 +_080962A2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080962A8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096290 + + thumb_func_start sub_80962B0 +sub_80962B0: @ 80962B0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_8096200 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80962D0 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80962B0 + + thumb_func_start sub_80962D0 +sub_80962D0: @ 80962D0 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080962E2 + movs r0, 0 + b _080962E8 +_080962E2: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080962E8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80962D0 + + thumb_func_start sub_80962F0 +sub_80962F0: @ 80962F0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_8096200 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8096310 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80962F0 + + thumb_func_start sub_8096310 +sub_8096310: @ 8096310 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _08096322 + movs r0, 0 + b _08096328 +_08096322: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08096328: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096310 + + thumb_func_start sub_8096330 +sub_8096330: @ 8096330 + 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 npc_apply_direction + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_80929DC + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartObjectImageAnim + adds r0, r4, 0 + movs r1, 0 + bl SeekObjectImageAnim + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8096330 + + thumb_func_start sub_8096368 +sub_8096368: @ 8096368 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x1 + movs r3, 0x1 + bl sub_8096330 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8096388 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096368 + + thumb_func_start sub_8096388 +sub_8096388: @ 8096388 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _0809639A + movs r0, 0 + b _080963A0 +_0809639A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080963A0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096388 + + thumb_func_start sub_80963A8 +sub_80963A8: @ 80963A8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x2 + movs r3, 0x1 + bl sub_8096330 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_80963C8 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80963A8 + + thumb_func_start sub_80963C8 +sub_80963C8: @ 80963C8 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _080963DA + movs r0, 0 + b _080963E0 +_080963DA: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_080963E0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80963C8 + + thumb_func_start sub_80963E8 +sub_80963E8: @ 80963E8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x3 + movs r3, 0x1 + bl sub_8096330 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8096408 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80963E8 + + thumb_func_start sub_8096408 +sub_8096408: @ 8096408 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _0809641A + movs r0, 0 + b _08096420 +_0809641A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08096420: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096408 + + thumb_func_start sub_8096428 +sub_8096428: @ 8096428 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + movs r3, 0x1 + bl sub_8096330 + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8096448 + lsls r0, 24 + lsrs r0, 24 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096428 + + thumb_func_start sub_8096448 +sub_8096448: @ 8096448 + push {r4,lr} + adds r4, r1, 0 + bl npc_obj_ministep_stop_on_arrival + lsls r0, 24 + cmp r0, 0 + bne _0809645A + movs r0, 0 + b _08096460 +_0809645A: + movs r0, 0x2 + strh r0, [r4, 0x32] + movs r0, 0x1 +_08096460: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096448 + + thumb_func_start sub_8096468 +sub_8096468: @ 8096468 + push {r4,lr} + adds r4, r1, 0 + bl sub_8097FA4 + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096468 + + thumb_func_start sub_809647C +sub_809647C: @ 809647C + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1B] + bl sub_8098044 + movs r0, 0 + strh r0, [r4, 0x26] + movs r0, 0x1 + strh r0, [r4, 0x32] + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809647C + + thumb_func_start sub_8096494 +sub_8096494: @ 8096494 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + movs r1, 0x26 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _080964A6 + movs r0, 0 + b _080964B0 +_080964A6: + ldrb r0, [r2, 0x1B] + bl sub_8098044 + movs r0, 0x1 + strh r0, [r4, 0x32] +_080964B0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8096494 + + thumb_func_start sub_80964B8 +sub_80964B8: @ 80964B8 + movs r0, 0x1 + bx lr + thumb_func_end sub_80964B8 + + thumb_func_start sub_80964BC +@ bool8 sub_80964BC(struct npc_state *fieldObject, struct obj *object) +sub_80964BC: @ 80964BC + adds r1, 0x2C + ldrb r0, [r1] + movs r2, 0x40 + orrs r0, r2 + strb r0, [r1] + movs r0, 0x1 + bx lr + thumb_func_end sub_80964BC + + thumb_func_start npc_obj_transfer_image_anim_pause_flag +@ void npc_obj_transfer_image_anim_pause_flag(struct npc_state *fieldObject, struct obj *object) +npc_obj_transfer_image_anim_pause_flag: @ 80964CC + push {lr} + ldrb r0, [r0, 0x1] + lsls r0, 29 + cmp r0, 0 + bge _080964E2 + adds r0, r1, 0 + adds r0, 0x2C + ldrb r1, [r0] + movs r2, 0x40 + orrs r1, r2 + strb r1, [r0] +_080964E2: + pop {r0} + bx r0 + thumb_func_end npc_obj_transfer_image_anim_pause_flag + + thumb_func_start sub_80964E8 +@ void sub_80964E8(struct npc_state *fieldObject, struct obj *object) +sub_80964E8: @ 80964E8 + push {r4,lr} + adds r4, r0, 0 + ldrb r3, [r4, 0x1] + lsls r0, r3, 28 + cmp r0, 0 + bge _08096510 + 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] +_08096510: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80964E8 + + thumb_func_start sub_8096518 +@ void sub_8096518(struct npc_state *fieldObject, struct obj *object) +sub_8096518: @ 8096518 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl sub_8096530 + 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_8096518 + + thumb_func_start sub_8096530 +sub_8096530: @ 8096530 + push {r4-r6,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 GetFieldObjectGraphicsInfo + adds r6, r0, 0 + adds r0, r4, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _08096594 + 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, =0x02021bbc + 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, =0x02021bbe + adds r0, r1 + ldrh r2, [r2] + adds r0, r2 + b _080965BC + .pool +_08096594: + 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 +_080965BC: + lsls r0, 16 + lsrs r2, r0, 16 + ldrh r0, [r6, 0x8] + adds r0, r3 + lsls r0, 16 + lsrs r1, r0, 16 + ldrh r0, [r6, 0xA] + adds r0, r2 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r0, r3, 16 + asrs r0, 16 + cmp r0, 0xFF + bgt _080965E4 + lsls r0, r1, 16 + asrs r0, 16 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bge _080965EC +_080965E4: + ldrb r0, [r5, 0x1] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r5, 0x1] +_080965EC: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0xAF + bgt _08096600 + lsls r0, r4, 16 + asrs r0, 16 + movs r1, 0x10 + negs r1, r1 + cmp r0, r1 + bge _08096608 +_08096600: + ldrb r0, [r5, 0x1] + movs r1, 0x40 + orrs r0, r1 + strb r0, [r5, 0x1] +_08096608: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8096530 + + thumb_func_start npc_update_obj_anim_flag +@ void npc_update_obj_anim_flag(struct npc_state *fieldObject, struct obj *object) +npc_update_obj_anim_flag: @ 8096610 + 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 _08096632 + movs r1, 0x4 + adds r0, r3, 0 + orrs r0, r1 + strb r0, [r2] +_08096632: + pop {r0} + bx r0 + thumb_func_end npc_update_obj_anim_flag + + .align 2, 0 @ Don't pad with nop. |