summaryrefslogtreecommitdiff
path: root/asm/field_effect_helpers.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/field_effect_helpers.s')
-rw-r--r--asm/field_effect_helpers.s4349
1 files changed, 4349 insertions, 0 deletions
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
new file mode 100644
index 000000000..bd268229c
--- /dev/null
+++ b/asm/field_effect_helpers.s
@@ -0,0 +1,4349 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start SetUpReflection
+SetUpReflection: @ 812680C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, 0
+ adds r4, r1, 0
+ lsls r5, r2, 24
+ lsrs r5, 24
+ movs r0, 0x20
+ ldrsh r1, [r4, r0]
+ movs r0, 0x22
+ ldrsh r2, [r4, r0]
+ adds r0, r4, 0
+ movs r3, 0x98
+ bl obj_unfreeze
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _081268BC
+ adds r7, r1, r0
+ ldr r0, _081268C0
+ str r0, [r7, 0x1C]
+ ldrb r1, [r7, 0x5]
+ movs r0, 0xC
+ orrs r1, r0
+ strb r1, [r7, 0x5]
+ ldr r2, _081268C4
+ lsrs r0, r1, 4
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r0, 4
+ movs r2, 0xF
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r7, 0x5]
+ movs r1, 0x3F
+ adds r1, r7
+ mov r8, r1
+ ldrb r0, [r1]
+ movs r1, 0x40
+ orrs r0, r1
+ mov r1, r8
+ strb r0, [r1]
+ ldr r0, _081268C8
+ str r0, [r7, 0x8]
+ adds r0, r7, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ ldr r0, _081268CC
+ str r0, [r7, 0x10]
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x8
+ orrs r0, r1
+ mov r1, r8
+ strb r0, [r1]
+ adds r2, r7, 0
+ adds r2, 0x42
+ ldrb r1, [r2]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r2]
+ ldrh r0, [r4, 0x2E]
+ strh r0, [r7, 0x2E]
+ ldrb r0, [r6, 0x8]
+ strh r0, [r7, 0x30]
+ strh r5, [r7, 0x3C]
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl npc_pal_op
+ cmp r5, 0
+ bne _081268B2
+ ldrb r0, [r7, 0x1]
+ movs r1, 0x4
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x1
+ orrs r1, r0
+ strb r1, [r7, 0x1]
+_081268B2:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081268BC: .4byte gSprites
+_081268C0: .4byte sub_81269E0
+_081268C4: .4byte gUnknown_0830FD14
+_081268C8: .4byte gDummySpriteAnimTable
+_081268CC: .4byte gDummySpriteAffineAnimTable
+ thumb_func_end SetUpReflection
+
+ thumb_func_start sub_81268D0
+sub_81268D0: @ 81268D0
+ push {lr}
+ ldrb r0, [r0, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ ldrh r0, [r0, 0xA]
+ subs r0, 0x2
+ lsls r0, 16
+ asrs r0, 16
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81268D0
+
+ thumb_func_start npc_pal_op
+npc_pal_op: @ 81268E4
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r1, _0812693C
+ mov r0, sp
+ movs r2, 0x6
+ bl memcpy
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ ldrb r0, [r5, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ ldrb r1, [r0, 0xC]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _08126940
+ ldrb r0, [r5, 0x1F]
+ bl sub_8057450
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _08126926
+ ldrb r0, [r5, 0x1E]
+ bl sub_8057450
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _08126940
+_08126926:
+ subs r0, 0x1
+ lsls r0, 1
+ add r0, sp
+ ldrh r0, [r0]
+ strh r0, [r4, 0x32]
+ ldrb r1, [r4, 0x5]
+ lsrs r1, 4
+ adds r0, r5, 0
+ bl npc_pal_op_A
+ b _0812694A
+ .align 2, 0
+_0812693C: .4byte gUnknown_08401E2C
+_08126940:
+ ldrb r1, [r4, 0x5]
+ lsrs r1, 4
+ adds r0, r5, 0
+ bl npc_pal_op_B
+_0812694A:
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end npc_pal_op
+
+ thumb_func_start npc_pal_op_B
+npc_pal_op_B: @ 8126954
+ push {r4,lr}
+ lsls r1, 24
+ lsrs r4, r1, 24
+ ldrb r0, [r0, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ adds r2, r0, 0
+ ldrh r1, [r2, 0x4]
+ ldr r0, _08126980
+ cmp r1, r0
+ beq _081269A8
+ ldrb r0, [r2, 0xC]
+ movs r1, 0xF
+ ands r1, r0
+ cmp r1, 0
+ bne _08126984
+ ldrh r0, [r2, 0x2]
+ adds r1, r4, 0
+ bl npc_load_two_palettes__no_record
+ b _081269A2
+ .align 2, 0
+_08126980: .4byte 0x000011ff
+_08126984:
+ cmp r1, 0xA
+ bne _08126992
+ ldrh r0, [r2, 0x2]
+ adds r1, r4, 0
+ bl npc_load_two_palettes__and_record
+ b _081269A2
+_08126992:
+ adds r0, r4, 0
+ bl npc_paltag_by_palslot
+ lsls r0, 16
+ lsrs r0, 16
+ adds r1, r4, 0
+ bl pal_patch_for_npc
+_081269A2:
+ adds r0, r4, 0
+ bl sub_807D78C
+_081269A8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end npc_pal_op_B
+
+ thumb_func_start npc_pal_op_A
+npc_pal_op_A: @ 81269B0
+ push {r4,lr}
+ lsls r1, 24
+ lsrs r4, r1, 24
+ ldrb r0, [r0, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ adds r2, r0, 0
+ ldrh r1, [r2, 0x4]
+ ldr r0, _081269DC
+ cmp r1, r0
+ beq _081269D4
+ adds r0, r1, 0
+ adds r1, r4, 0
+ bl pal_patch_for_npc
+ adds r0, r4, 0
+ bl sub_807D78C
+_081269D4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081269DC: .4byte 0x000011ff
+ thumb_func_end npc_pal_op_A
+
+ thumb_func_start sub_81269E0
+sub_81269E0: @ 81269E0
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ adds r4, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08126A28
+ adds r7, r0, r1
+ ldrb r1, [r7, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08126A2C
+ adds r5, r0, r1
+ ldr r0, [r7]
+ ldr r1, _08126A30
+ ands r0, r1
+ cmp r0, r1
+ bne _08126A18
+ ldrb r1, [r7, 0x8]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ beq _08126A34
+_08126A18:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ b _08126B3E
+ .align 2, 0
+_08126A28: .4byte gMapObjects
+_08126A2C: .4byte gSprites
+_08126A30: .4byte 0x00020001
+_08126A34:
+ ldr r1, _08126B4C
+ ldrb r0, [r5, 0x5]
+ lsrs r0, 4
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r1, 4
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xF
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ ldrb r1, [r5, 0x1]
+ lsrs r1, 6
+ lsls r1, 6
+ ldrb r2, [r4, 0x1]
+ movs r3, 0x3F
+ adds r0, r3, 0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ ldrb r0, [r5, 0x3]
+ lsrs r0, 6
+ lsls r0, 6
+ ldrb r2, [r4, 0x3]
+ adds r1, r3, 0
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x3]
+ ldrb r0, [r5, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ movs r2, 0x10
+ orrs r0, r2
+ lsls r0, 1
+ subs r2, 0x4F
+ mov r9, r2
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x3]
+ ldrh r1, [r5, 0x4]
+ lsls r1, 22
+ lsrs r1, 22
+ ldrh r2, [r4, 0x4]
+ ldr r0, _08126B50
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ ldr r0, [r5, 0x18]
+ str r0, [r4, 0x18]
+ adds r0, r5, 0
+ adds r0, 0x42
+ ldrb r0, [r0]
+ lsls r0, 26
+ lsrs r0, 26
+ adds r2, r4, 0
+ adds r2, 0x42
+ ands r3, r0
+ ldrb r1, [r2]
+ movs r0, 0x40
+ negs r0, r0
+ ands r0, r1
+ orrs r0, r3
+ strb r0, [r2]
+ movs r0, 0x3E
+ adds r0, r5
+ mov r8, r0
+ ldrb r0, [r0]
+ adds r6, r4, 0
+ adds r6, 0x3E
+ movs r1, 0x4
+ ands r1, r0
+ ldrb r2, [r6]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r6]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r4, 0x20]
+ adds r0, r7, 0
+ bl sub_81268D0
+ ldrh r1, [r5, 0x22]
+ adds r0, r1
+ ldrh r1, [r4, 0x32]
+ adds r1, r0
+ strh r1, [r4, 0x22]
+ adds r0, r5, 0
+ adds r0, 0x28
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ adds r0, 0x28
+ strb r1, [r0]
+ adds r0, r5, 0
+ adds r0, 0x29
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x29
+ strb r0, [r1]
+ ldrh r0, [r5, 0x24]
+ strh r0, [r4, 0x24]
+ ldrh r0, [r5, 0x26]
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ mov r2, r8
+ ldrb r0, [r2]
+ movs r1, 0x2
+ ands r1, r0
+ ldrb r2, [r6]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r6]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _08126B3E
+ ldrb r0, [r4, 0x3]
+ mov r2, r9
+ ands r2, r0
+ strb r2, [r4, 0x3]
+ ldrb r0, [r5, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ movs r1, 0x8
+ ands r0, r1
+ cmp r0, 0
+ beq _08126B3E
+ movs r1, 0x2
+ adds r0, r2, 0
+ orrs r0, r1
+ strb r0, [r4, 0x3]
+_08126B3E:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08126B4C: .4byte gUnknown_0830FD14
+_08126B50: .4byte 0xfffffc00
+ thumb_func_end sub_81269E0
+
+ thumb_func_start sub_8126B54
+sub_8126B54: @ 8126B54
+ push {r4,lr}
+ ldr r0, _08126B9C
+ ldr r0, [r0, 0x20]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ adds r4, r0, 0
+ cmp r0, 0x40
+ beq _08126B92
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08126BA0
+ adds r1, r0
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ movs r3, 0x4
+ orrs r0, r3
+ strb r0, [r1, 0x5]
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x2
+ orrs r0, r2
+ orrs r0, r3
+ strb r0, [r1]
+_08126B92:
+ adds r0, r4, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08126B9C: .4byte gFieldEffectObjectTemplatePointers
+_08126BA0: .4byte gSprites
+ thumb_func_end sub_8126B54
+
+ thumb_func_start objid_set_invisible
+objid_set_invisible: @ 8126BA4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08126BC0
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_08126BC0: .4byte gSprites
+ thumb_func_end objid_set_invisible
+
+ thumb_func_start sub_8126BC4
+sub_8126BC4: @ 8126BC4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ lsls r2, 16
+ lsrs r7, r2, 16
+ lsls r3, 16
+ lsrs r6, r3, 16
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ ldr r1, _08126C68
+ adds r2, r0, r1
+ adds r0, r2, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _08126C0E
+ movs r0, 0x2E
+ ldrsh r1, [r2, r0]
+ lsls r0, r7, 16
+ asrs r0, 16
+ cmp r1, r0
+ bne _08126C0E
+ movs r0, 0x30
+ ldrsh r1, [r2, r0]
+ lsls r0, r6, 16
+ asrs r0, 16
+ cmp r1, r0
+ beq _08126C5A
+_08126C0E:
+ lsls r0, r7, 16
+ asrs r0, 16
+ lsls r1, r6, 16
+ asrs r1, 16
+ mov r4, sp
+ adds r4, 0x2
+ mov r2, sp
+ adds r3, r4, 0
+ bl sub_80603CC
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ ldr r1, _08126C68
+ adds r2, r0, r1
+ mov r0, sp
+ ldrh r0, [r0]
+ adds r0, 0x8
+ strh r0, [r2, 0x20]
+ ldrh r0, [r4]
+ adds r0, 0x8
+ strh r0, [r2, 0x22]
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r1, [r3]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r3]
+ strh r7, [r2, 0x2E]
+ strh r6, [r2, 0x30]
+ mov r1, r8
+ subs r1, 0x1
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r2, 0
+ bl StartSpriteAnim
+_08126C5A:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08126C68: .4byte gSprites
+ thumb_func_end sub_8126BC4
+
+ thumb_func_start oei_shadow
+oei_shadow: @ 8126C6C
+ push {r4,r5,lr}
+ ldr r5, _08126CF8
+ ldrb r0, [r5]
+ ldrb r1, [r5, 0x4]
+ ldrb r2, [r5, 0x8]
+ bl GetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08126CFC
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r0, [r1, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ adds r4, r0, 0
+ ldr r2, _08126D00
+ ldr r1, _08126D04
+ ldrb r0, [r4, 0xC]
+ lsls r0, 26
+ lsrs r0, 30
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x94
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _08126CF0
+ ldr r0, _08126D08
+ lsls r2, r1, 4
+ adds r2, r1
+ lsls r2, 2
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ ldr r0, [r5]
+ strh r0, [r2, 0x2E]
+ ldr r0, [r5, 0x4]
+ strh r0, [r2, 0x30]
+ ldr r0, [r5, 0x8]
+ strh r0, [r2, 0x32]
+ ldrh r1, [r4, 0xA]
+ lsls r1, 16
+ asrs r1, 17
+ ldr r3, _08126D0C
+ ldrb r0, [r4, 0xC]
+ lsls r0, 26
+ lsrs r0, 30
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ subs r1, r0
+ strh r1, [r2, 0x34]
+_08126CF0:
+ movs r0, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08126CF8: .4byte gUnknown_0202FF84
+_08126CFC: .4byte gMapObjects
+_08126D00: .4byte gFieldEffectObjectTemplatePointers
+_08126D04: .4byte gUnknown_08401E32
+_08126D08: .4byte gSprites
+_08126D0C: .4byte gUnknown_08401E36
+ thumb_func_end oei_shadow
+
+ thumb_func_start oamc_shadow
+oamc_shadow: @ 8126D10
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r5, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r5, 0x32]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ beq _08126D3E
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl FieldEffectStop
+ b _08126DC4
+_08126D3E:
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08126DCC
+ adds r4, r0, r1
+ ldrb r0, [r4, 0x4]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08126DD0
+ adds r1, r0
+ ldrb r0, [r1, 0x5]
+ movs r2, 0xC
+ ands r2, r0
+ ldrb r3, [r5, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r5, 0x5]
+ ldrh r0, [r1, 0x20]
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x34]
+ ldrh r1, [r1, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ ldr r0, [r4]
+ ldr r1, _08126DD4
+ ands r0, r1
+ cmp r0, r1
+ bne _08126DBC
+ ldrb r0, [r4, 0x1E]
+ bl sub_8056E14
+ lsls r0, 24
+ cmp r0, 0
+ bne _08126DBC
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ cmp r0, 0
+ bne _08126DBC
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsSurfableWaterOrUnderwater
+ lsls r0, 24
+ cmp r0, 0
+ bne _08126DBC
+ ldrb r0, [r4, 0x1E]
+ bl MetatileBehavior_IsReflective
+ lsls r0, 24
+ cmp r0, 0
+ bne _08126DBC
+ ldrb r0, [r4, 0x1F]
+ bl MetatileBehavior_IsReflective
+ lsls r0, 24
+ cmp r0, 0
+ beq _08126DC4
+_08126DBC:
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl FieldEffectStop
+_08126DC4:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08126DCC: .4byte gMapObjects
+_08126DD0: .4byte gSprites
+_08126DD4: .4byte 0x00400001
+ thumb_func_end oamc_shadow
+
+ thumb_func_start oei_grass_normal
+oei_grass_normal: @ 8126DD8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r5, _08126E70
+ ldrh r1, [r5]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r5, 0x4]
+ mov r4, sp
+ adds r4, 0x2
+ strh r0, [r4]
+ mov r0, sp
+ adds r1, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08126E74
+ ldr r0, [r0, 0x10]
+ mov r1, sp
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ movs r3, 0
+ ldrsh r2, [r4, r3]
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _08126E64
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08126E78
+ adds r3, r0, r1
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0x3
+ ldrb r1, [r5, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r3, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x5]
+ ldr r0, [r5, 0x8]
+ strh r0, [r3, 0x2E]
+ ldr r0, [r5]
+ strh r0, [r3, 0x30]
+ ldr r0, [r5, 0x4]
+ strh r0, [r3, 0x32]
+ ldr r0, [r5, 0x10]
+ strh r0, [r3, 0x34]
+ ldr r0, [r5, 0x14]
+ strh r0, [r3, 0x36]
+ ldr r0, [r5, 0x18]
+ strh r0, [r3, 0x38]
+ ldr r0, [r5, 0x1C]
+ cmp r0, 0
+ beq _08126E64
+ adds r0, r3, 0
+ movs r1, 0x4
+ bl SeekSpriteAnim
+_08126E64:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08126E70: .4byte gUnknown_0202FF84
+_08126E74: .4byte gFieldEffectObjectTemplatePointers
+_08126E78: .4byte gSprites
+ thumb_func_end oei_grass_normal
+
+ thumb_func_start unc_grass_normal
+unc_grass_normal: @ 8126E7C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x38]
+ lsrs r4, r0, 8
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r3, _08126F24
+ ldrb r1, [r3]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08126EC6
+ ldr r2, _08126F28
+ movs r0, 0x5
+ ldrsb r0, [r2, r0]
+ cmp r0, r4
+ bne _08126EAC
+ movs r0, 0x4
+ ldrsb r0, [r2, r0]
+ cmp r0, r7
+ beq _08126EC6
+_08126EAC:
+ ldr r1, [r3, 0x4]
+ ldrh r0, [r5, 0x30]
+ subs r0, r1
+ strh r0, [r5, 0x30]
+ ldr r1, [r3, 0x8]
+ ldrh r0, [r5, 0x32]
+ subs r0, r1
+ strh r0, [r5, 0x32]
+ ldrb r1, [r2, 0x5]
+ lsls r1, 8
+ ldrb r0, [r2, 0x4]
+ orrs r0, r1
+ strh r0, [r5, 0x38]
+_08126EC6:
+ ldrh r0, [r5, 0x34]
+ lsrs r1, r0, 8
+ mov r8, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldrh r0, [r5, 0x36]
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r2, 0x30
+ ldrsh r0, [r5, r2]
+ movs r2, 0x32
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r0, r8
+ adds r1, r4, 0
+ adds r2, r7, 0
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _08126F1A
+ adds r0, r6, 0
+ bl MetatileBehavior_IsTallGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _08126F1A
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _08126F2C
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08126F2C
+_08126F1A:
+ adds r0, r5, 0
+ movs r1, 0x4
+ bl FieldEffectStop
+ b _08126F70
+ .align 2, 0
+_08126F24: .4byte gUnknown_0202E844
+_08126F28: .4byte gSaveBlock1
+_08126F2C:
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08126F7C
+ adds r2, r0, r1
+ ldr r0, [r2, 0x10]
+ ldr r1, [r5, 0x30]
+ cmp r0, r1
+ beq _08126F4C
+ ldr r0, [r2, 0x14]
+ cmp r0, r1
+ beq _08126F4C
+ movs r0, 0x1
+ strh r0, [r5, 0x3C]
+_08126F4C:
+ movs r6, 0
+ adds r0, r5, 0
+ adds r0, 0x2B
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08126F5A
+ movs r6, 0x4
+_08126F5A:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_806487C
+ ldrh r1, [r5, 0x2E]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ adds r2, r6, 0
+ bl sub_812882C
+_08126F70:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08126F7C: .4byte gMapObjects
+ thumb_func_end unc_grass_normal
+
+ thumb_func_start sub_8126F80
+sub_8126F80: @ 8126F80
+ push {r4,lr}
+ ldr r4, _08126FE4
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0xC
+ bl sub_8060470
+ ldr r0, _08126FE8
+ ldr r0, [r0, 0x28]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _08126FDC
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08126FEC
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ ldr r0, [r4, 0x8]
+ strh r0, [r2, 0x2E]
+ movs r0, 0xC
+ strh r0, [r2, 0x30]
+_08126FDC:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08126FE4: .4byte gUnknown_0202FF84
+_08126FE8: .4byte gFieldEffectObjectTemplatePointers
+_08126FEC: .4byte gSprites
+ thumb_func_end sub_8126F80
+
+ thumb_func_start sub_8126FF0
+sub_8126FF0: @ 8126FF0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r4, [sp, 0x18]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r12, r0
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r6, r2, 24
+ movs r5, 0
+ ldr r0, _08127060
+ mov r8, r0
+ lsls r3, 16
+ asrs r3, 16
+ lsls r4, 16
+ asrs r4, 16
+_08127014:
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ mov r1, r8
+ adds r2, r0, r1
+ adds r0, r2, 0
+ adds r0, 0x3E
+ ldrb r0, [r0]
+ lsls r0, 31
+ cmp r0, 0
+ beq _08127068
+ ldr r1, [r2, 0x1C]
+ ldr r0, _08127064
+ cmp r1, r0
+ bne _08127068
+ movs r1, 0x30
+ ldrsh r0, [r2, r1]
+ cmp r3, r0
+ bne _08127068
+ movs r1, 0x32
+ ldrsh r0, [r2, r1]
+ cmp r4, r0
+ bne _08127068
+ ldrh r1, [r2, 0x34]
+ lsrs r0, r1, 8
+ cmp r12, r0
+ bne _08127068
+ movs r0, 0xFF
+ ands r0, r1
+ cmp r7, r0
+ bne _08127068
+ movs r1, 0x36
+ ldrsh r0, [r2, r1]
+ cmp r6, r0
+ bne _08127068
+ adds r0, r5, 0
+ b _08127074
+ .align 2, 0
+_08127060: .4byte gSprites
+_08127064: .4byte unc_grass_normal
+_08127068:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3F
+ bls _08127014
+ movs r0, 0x40
+_08127074:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8126FF0
+
+ thumb_func_start sub_8127080
+sub_8127080: @ 8127080
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r5, _0812711C
+ ldrh r1, [r5]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r5, 0x4]
+ mov r4, sp
+ adds r4, 0x2
+ strh r0, [r4]
+ mov r0, sp
+ adds r1, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127120
+ ldr r0, [r0, 0x3C]
+ mov r1, sp
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ movs r3, 0
+ ldrsh r2, [r4, r3]
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _08127110
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08127124
+ adds r4, r0, r1
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r2]
+ ldrb r0, [r5, 0x8]
+ bl ZCoordToPriority
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ ldr r0, [r5, 0x8]
+ strh r0, [r4, 0x2E]
+ ldr r0, [r5]
+ strh r0, [r4, 0x30]
+ ldr r0, [r5, 0x4]
+ strh r0, [r4, 0x32]
+ ldr r0, [r5, 0x10]
+ strh r0, [r4, 0x34]
+ ldr r0, [r5, 0x14]
+ strh r0, [r4, 0x36]
+ ldr r0, [r5, 0x18]
+ strh r0, [r4, 0x38]
+ ldr r0, [r5, 0x1C]
+ cmp r0, 0
+ beq _08127110
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl SeekSpriteAnim
+_08127110:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0812711C: .4byte gUnknown_0202FF84
+_08127120: .4byte gFieldEffectObjectTemplatePointers
+_08127124: .4byte gSprites
+ thumb_func_end sub_8127080
+
+ thumb_func_start unc_grass_tall
+unc_grass_tall: @ 8127128
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x38]
+ lsrs r7, r0, 8
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r3, _081271D0
+ ldrb r1, [r3]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08127172
+ ldr r2, _081271D4
+ movs r0, 0x5
+ ldrsb r0, [r2, r0]
+ cmp r0, r7
+ bne _08127158
+ movs r0, 0x4
+ ldrsb r0, [r2, r0]
+ cmp r0, r6
+ beq _08127172
+_08127158:
+ ldr r1, [r3, 0x4]
+ ldrh r0, [r5, 0x30]
+ subs r0, r1
+ strh r0, [r5, 0x30]
+ ldr r1, [r3, 0x8]
+ ldrh r0, [r5, 0x32]
+ subs r0, r1
+ strh r0, [r5, 0x32]
+ ldrb r1, [r2, 0x5]
+ lsls r1, 8
+ ldrb r0, [r2, 0x4]
+ orrs r0, r1
+ strh r0, [r5, 0x38]
+_08127172:
+ ldrh r0, [r5, 0x34]
+ lsrs r1, r0, 8
+ mov r8, r1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrh r0, [r5, 0x36]
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r2, 0x30
+ ldrsh r0, [r5, r2]
+ movs r2, 0x32
+ ldrsh r1, [r5, r2]
+ bl MapGridGetMetatileBehaviorAt
+ lsls r0, 24
+ lsrs r4, r0, 24
+ mov r0, r8
+ adds r1, r7, 0
+ adds r2, r6, 0
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _081271C6
+ adds r0, r4, 0
+ bl MetatileBehavior_IsLongGrass
+ lsls r0, 24
+ cmp r0, 0
+ beq _081271C6
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _081271D8
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _081271D8
+_081271C6:
+ adds r0, r5, 0
+ movs r1, 0x11
+ bl FieldEffectStop
+ b _0812720E
+ .align 2, 0
+_081271D0: .4byte gUnknown_0202E844
+_081271D4: .4byte gSaveBlock1
+_081271D8:
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0812721C
+ adds r2, r0, r1
+ ldr r0, [r2, 0x10]
+ ldr r1, [r5, 0x30]
+ cmp r0, r1
+ beq _081271F8
+ ldr r0, [r2, 0x14]
+ cmp r0, r1
+ beq _081271F8
+ movs r0, 0x1
+ strh r0, [r5, 0x3C]
+_081271F8:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_806487C
+ ldrh r1, [r5, 0x2E]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ movs r2, 0
+ bl sub_812882C
+_0812720E:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812721C: .4byte gMapObjects
+ thumb_func_end unc_grass_tall
+
+ thumb_func_start sub_8127220
+sub_8127220: @ 8127220
+ push {r4,lr}
+ ldr r4, _08127284
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127288
+ ldr r0, [r0, 0x40]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _0812727C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _0812728C
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ ldr r0, [r4, 0x8]
+ strh r0, [r2, 0x2E]
+ movs r0, 0x12
+ strh r0, [r2, 0x30]
+_0812727C:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127284: .4byte gUnknown_0202FF84
+_08127288: .4byte gFieldEffectObjectTemplatePointers
+_0812728C: .4byte gSprites
+ thumb_func_end sub_8127220
+
+ thumb_func_start sub_8127290
+sub_8127290: @ 8127290
+ push {r4-r6,lr}
+ ldr r6, _08127324
+ ldrb r0, [r6]
+ ldrb r1, [r6, 0x4]
+ ldrb r2, [r6, 0x8]
+ bl GetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08127328
+ adds r5, r1, r0
+ ldr r0, _0812732C
+ ldr r0, [r0, 0x78]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _0812731C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r4, _08127330
+ adds r2, r4
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x5]
+ movs r1, 0xC
+ ands r1, r0
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ ldr r0, [r6]
+ strh r0, [r2, 0x2E]
+ ldr r0, [r6, 0x4]
+ strh r0, [r2, 0x30]
+ ldr r0, [r6, 0x8]
+ strh r0, [r2, 0x32]
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r0, [r0, 0x20]
+ strh r0, [r2, 0x34]
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r0, [r0, 0x22]
+ strh r0, [r2, 0x36]
+_0812731C:
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127324: .4byte gUnknown_0202FF84
+_08127328: .4byte gMapObjects
+_0812732C: .4byte gFieldEffectObjectTemplatePointers
+_08127330: .4byte gSprites
+ thumb_func_end sub_8127290
+
+ thumb_func_start sub_8127334
+sub_8127334: @ 8127334
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x32]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _08127372
+ ldr r5, _0812737C
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r5
+ ldrb r0, [r1, 0x2]
+ lsls r0, 29
+ cmp r0, 0
+ blt _08127380
+_08127372:
+ adds r0, r4, 0
+ movs r1, 0x29
+ bl FieldEffectStop
+ b _08127416
+ .align 2, 0
+_0812737C: .4byte gMapObjects
+_08127380:
+ ldrb r0, [r1, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ mov r8, r0
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r1, [r0, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08127424
+ adds r6, r0, r1
+ ldrh r5, [r6, 0x22]
+ ldrh r7, [r6, 0x20]
+ movs r0, 0x20
+ ldrsh r1, [r6, r0]
+ movs r2, 0x34
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _081273BC
+ lsls r0, r5, 16
+ asrs r0, 16
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ beq _081273D6
+_081273BC:
+ strh r7, [r4, 0x34]
+ strh r5, [r4, 0x36]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _081273D6
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAnim
+_081273D6:
+ strh r7, [r4, 0x20]
+ strh r5, [r4, 0x22]
+ mov r1, r8
+ ldrh r0, [r1, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ subs r0, 0x8
+ strh r0, [r4, 0x26]
+ adds r0, r6, 0
+ adds r0, 0x43
+ ldrb r0, [r0]
+ subs r0, 0x1
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrb r0, [r6, 0x5]
+ movs r1, 0xC
+ ands r1, r0
+ ldrb r2, [r4, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+ adds r0, r6, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ lsls r1, 29
+ lsrs r1, 31
+ adds r0, r4, 0
+ bl sub_806487C
+_08127416:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127424: .4byte gSprites
+ thumb_func_end sub_8127334
+
+ thumb_func_start sub_8127428
+sub_8127428: @ 8127428
+ push {r4,lr}
+ ldr r4, _08127490
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127494
+ ldr r0, [r0, 0x2C]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r4, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _08127486
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08127498
+ adds r0, r1
+ adds r3, r0, 0
+ adds r3, 0x3E
+ ldrb r1, [r3]
+ movs r2, 0x2
+ orrs r1, r2
+ strb r1, [r3]
+ movs r1, 0x3
+ ldrb r2, [r4, 0xC]
+ ands r2, r1
+ lsls r2, 2
+ ldrb r3, [r0, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r3
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ movs r1, 0xD
+ strh r1, [r0, 0x3C]
+ ldrb r1, [r4, 0x10]
+ bl StartSpriteAnim
+_08127486:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127490: .4byte gUnknown_0202FF84
+_08127494: .4byte gFieldEffectObjectTemplatePointers
+_08127498: .4byte gSprites
+ thumb_func_end sub_8127428
+
+ thumb_func_start sub_812749C
+sub_812749C: @ 812749C
+ push {r4,r5,lr}
+ ldr r4, _08127504
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127508
+ ldr r0, [r0, 0x5C]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r4, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ adds r5, r1, 0
+ cmp r1, 0x40
+ beq _081274FC
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0812750C
+ adds r0, r1
+ adds r3, r0, 0
+ adds r3, 0x3E
+ ldrb r1, [r3]
+ movs r2, 0x2
+ orrs r1, r2
+ strb r1, [r3]
+ movs r1, 0x3
+ ldrb r2, [r4, 0xC]
+ ands r2, r1
+ lsls r2, 2
+ ldrb r3, [r0, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r3
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ movs r1, 0x18
+ strh r1, [r0, 0x3C]
+ ldrb r1, [r4, 0x10]
+ bl StartSpriteAnim
+_081274FC:
+ adds r0, r5, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127504: .4byte gUnknown_0202FF84
+_08127508: .4byte gFieldEffectObjectTemplatePointers
+_0812750C: .4byte gSprites
+ thumb_func_end sub_812749C
+
+ thumb_func_start sub_8127510
+sub_8127510: @ 8127510
+ push {r4,r5,lr}
+ ldr r4, _08127578
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _0812757C
+ ldr r0, [r0, 0x6C]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r4, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ adds r5, r1, 0
+ cmp r1, 0x40
+ beq _08127570
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08127580
+ adds r0, r1
+ adds r3, r0, 0
+ adds r3, 0x3E
+ ldrb r1, [r3]
+ movs r2, 0x2
+ orrs r1, r2
+ strb r1, [r3]
+ movs r1, 0x3
+ ldrb r2, [r4, 0xC]
+ ands r2, r1
+ lsls r2, 2
+ ldrb r3, [r0, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r3
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ movs r1, 0x23
+ strh r1, [r0, 0x3C]
+ ldrb r1, [r4, 0x10]
+ bl StartSpriteAnim
+_08127570:
+ adds r0, r5, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127578: .4byte gUnknown_0202FF84
+_0812757C: .4byte gFieldEffectObjectTemplatePointers
+_08127580: .4byte gSprites
+ thumb_func_end sub_8127510
+
+ thumb_func_start sub_8127584
+sub_8127584: @ 8127584
+ push {lr}
+ ldr r2, _0812759C
+ movs r3, 0x2E
+ ldrsh r1, [r0, r3]
+ lsls r1, 2
+ adds r1, r2
+ ldr r1, [r1]
+ bl _call_via_r1
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812759C: .4byte gUnknown_08401E40
+ thumb_func_end sub_8127584
+
+ thumb_func_start sub_81275A0
+sub_81275A0: @ 81275A0
+ push {lr}
+ adds r1, r0, 0
+ ldrh r0, [r1, 0x30]
+ adds r0, 0x1
+ strh r0, [r1, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x28
+ ble _081275B6
+ movs r0, 0x1
+ strh r0, [r1, 0x2E]
+_081275B6:
+ adds r0, r1, 0
+ movs r1, 0
+ bl sub_806487C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81275A0
+
+ thumb_func_start sub_81275C4
+sub_81275C4: @ 81275C4
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ ldrb r1, [r3]
+ lsls r1, 29
+ lsrs r1, 31
+ adds r0, r4, 0
+ bl sub_806487C
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x38
+ ble _08127608
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldEffectStop
+_08127608:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81275C4
+
+ thumb_func_start sub_8127610
+sub_8127610: @ 8127610
+ push {r4-r6,lr}
+ ldr r6, _081276A4
+ ldrb r0, [r6]
+ ldrb r1, [r6, 0x4]
+ ldrb r2, [r6, 0x8]
+ bl GetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _081276A8
+ adds r5, r1, r0
+ ldr r0, _081276AC
+ ldr r0, [r0, 0x34]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x40
+ beq _0812769A
+ ldrb r0, [r5, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ lsls r3, r4, 4
+ adds r3, r4
+ lsls r3, 2
+ ldr r4, _081276B0
+ adds r3, r4
+ movs r1, 0x3E
+ adds r1, r3
+ mov r12, r1
+ ldrb r1, [r1]
+ movs r2, 0x2
+ orrs r1, r2
+ mov r2, r12
+ strb r1, [r2]
+ ldrb r2, [r5, 0x4]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ ldrb r1, [r1, 0x5]
+ movs r2, 0xC
+ ands r2, r1
+ ldrb r4, [r3, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r4
+ orrs r1, r2
+ strb r1, [r3, 0x5]
+ ldr r1, [r6]
+ strh r1, [r3, 0x2E]
+ ldr r1, [r6, 0x4]
+ strh r1, [r3, 0x30]
+ ldr r1, [r6, 0x8]
+ strh r1, [r3, 0x32]
+ ldrh r0, [r0, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ subs r0, 0x4
+ strh r0, [r3, 0x26]
+ movs r0, 0x46
+ bl PlaySE
+_0812769A:
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081276A4: .4byte gUnknown_0202FF84
+_081276A8: .4byte gMapObjects
+_081276AC: .4byte gFieldEffectObjectTemplatePointers
+_081276B0: .4byte gSprites
+ thumb_func_end sub_8127610
+
+ thumb_func_start sub_81276B4
+sub_81276B4: @ 81276B4
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ bne _081276E4
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x32]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ beq _081276EE
+_081276E4:
+ adds r0, r4, 0
+ movs r1, 0xF
+ bl FieldEffectStop
+ b _0812772E
+_081276EE:
+ ldr r3, _08127738
+ ldr r2, _0812773C
+ 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 r0, [r0, 0x20]
+ strh r0, [r4, 0x20]
+ 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 r0, [r0, 0x22]
+ strh r0, [r4, 0x22]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_806487C
+_0812772E:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127738: .4byte gSprites
+_0812773C: .4byte gMapObjects
+ thumb_func_end sub_81276B4
+
+ thumb_func_start sub_8127740
+sub_8127740: @ 8127740
+ push {r4,lr}
+ ldr r4, _081277A4
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0xC
+ bl sub_8060470
+ ldr r0, _081277A8
+ ldr r0, [r0, 0x38]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _0812779C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _081277AC
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ ldr r0, [r4, 0x8]
+ strh r0, [r2, 0x2E]
+ movs r0, 0x10
+ strh r0, [r2, 0x30]
+_0812779C:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081277A4: .4byte gUnknown_0202FF84
+_081277A8: .4byte gFieldEffectObjectTemplatePointers
+_081277AC: .4byte gSprites
+ thumb_func_end sub_8127740
+
+ thumb_func_start oei_water_drop_tall
+oei_water_drop_tall: @ 81277B0
+ push {r4,lr}
+ ldr r4, _08127814
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127818
+ ldr r0, [r0, 0x30]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _0812780C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _0812781C
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ ldr r0, [r4, 0x8]
+ strh r0, [r2, 0x2E]
+ movs r0, 0xE
+ strh r0, [r2, 0x30]
+_0812780C:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127814: .4byte gUnknown_0202FF84
+_08127818: .4byte gFieldEffectObjectTemplatePointers
+_0812781C: .4byte gSprites
+ thumb_func_end oei_water_drop_tall
+
+ thumb_func_start sub_8127820
+sub_8127820: @ 8127820
+ push {r4-r7,lr}
+ ldr r7, _081278C0
+ ldrb r0, [r7]
+ ldrb r1, [r7, 0x4]
+ ldrb r2, [r7, 0x8]
+ bl GetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _081278C4
+ adds r6, r1, r0
+ ldr r0, _081278C8
+ ldr r0, [r0, 0x34]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x40
+ beq _081278B6
+ ldrb r0, [r6, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ adds r4, r0, 0
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ ldr r3, _081278CC
+ adds r0, r3
+ ldr r1, _081278D0
+ str r1, [r0, 0x1C]
+ adds r5, r0, 0
+ adds r5, 0x3E
+ ldrb r1, [r5]
+ movs r2, 0x2
+ orrs r1, r2
+ strb r1, [r5]
+ ldrb r2, [r6, 0x4]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r3
+ ldrb r1, [r1, 0x5]
+ movs r2, 0xC
+ ands r2, r1
+ ldrb r3, [r0, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r3
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ ldr r1, [r7]
+ strh r1, [r0, 0x2E]
+ ldr r1, [r7, 0x4]
+ strh r1, [r0, 0x30]
+ ldr r1, [r7, 0x8]
+ strh r1, [r0, 0x32]
+ ldr r1, _081278D4
+ strh r1, [r0, 0x34]
+ movs r1, 0x1
+ negs r1, r1
+ strh r1, [r0, 0x36]
+ ldrh r1, [r4, 0xA]
+ lsls r1, 16
+ asrs r1, 17
+ subs r1, 0x4
+ strh r1, [r0, 0x26]
+ movs r1, 0x1
+ bl StartSpriteAnim
+_081278B6:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081278C0: .4byte gUnknown_0202FF84
+_081278C4: .4byte gMapObjects
+_081278C8: .4byte gFieldEffectObjectTemplatePointers
+_081278CC: .4byte gSprites
+_081278D0: .4byte sub_81278D8
+_081278D4: .4byte 0x0000ffff
+ thumb_func_end sub_8127820
+
+ thumb_func_start sub_81278D8
+sub_81278D8: @ 81278D8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x32]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _08127912
+ ldr r2, _0812791C
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r5, r0, r2
+ ldrb r0, [r5, 0x2]
+ lsls r0, 28
+ cmp r0, 0
+ blt _08127920
+_08127912:
+ adds r0, r4, 0
+ movs r1, 0x22
+ bl FieldEffectStop
+ b _0812796A
+ .align 2, 0
+_0812791C: .4byte gMapObjects
+_08127920:
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08127974
+ adds r0, r1
+ ldrh r1, [r0, 0x20]
+ strh r1, [r4, 0x20]
+ ldrh r1, [r0, 0x22]
+ strh r1, [r4, 0x22]
+ adds r0, 0x43
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_806487C
+ ldr r1, [r5, 0x10]
+ ldr r0, [r4, 0x34]
+ cmp r1, r0
+ beq _0812796A
+ ldrh r0, [r5, 0x10]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r5, 0x12]
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _0812796A
+ movs r0, 0x46
+ bl PlaySE
+_0812796A:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127974: .4byte gSprites
+ thumb_func_end sub_81278D8
+
+ thumb_func_start oei_ripples
+oei_ripples: @ 8127978
+ push {r4,lr}
+ ldr r0, _081279CC
+ ldr r0, [r0, 0x14]
+ ldr r4, _081279D0
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r4, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _081279C4
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _081279D4
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ movs r0, 0x5
+ strh r0, [r2, 0x2E]
+_081279C4:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081279CC: .4byte gFieldEffectObjectTemplatePointers
+_081279D0: .4byte gUnknown_0202FF84
+_081279D4: .4byte gSprites
+ thumb_func_end oei_ripples
+
+ thumb_func_start sub_81279D8
+sub_81279D8: @ 81279D8
+ push {r4-r6,lr}
+ ldr r6, _08127A6C
+ ldrb r0, [r6]
+ ldrb r1, [r6, 0x4]
+ ldrb r2, [r6, 0x8]
+ bl GetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08127A70
+ adds r5, r1, r0
+ ldr r0, _08127A74
+ ldr r0, [r0, 0x7C]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _08127A64
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r4, _08127A78
+ adds r2, r4
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x5]
+ movs r1, 0xC
+ ands r1, r0
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ ldr r0, [r6]
+ strh r0, [r2, 0x2E]
+ ldr r0, [r6, 0x4]
+ strh r0, [r2, 0x30]
+ ldr r0, [r6, 0x8]
+ strh r0, [r2, 0x32]
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r0, [r0, 0x20]
+ strh r0, [r2, 0x34]
+ ldrb r1, [r5, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r0, [r0, 0x22]
+ strh r0, [r2, 0x36]
+_08127A64:
+ movs r0, 0
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127A6C: .4byte gUnknown_0202FF84
+_08127A70: .4byte gMapObjects
+_08127A74: .4byte gFieldEffectObjectTemplatePointers
+_08127A78: .4byte gSprites
+ thumb_func_end sub_81279D8
+
+ thumb_func_start sub_8127A7C
+sub_8127A7C: @ 8127A7C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x32]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _08127AB6
+ ldr r5, _08127AC0
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r5
+ ldrb r0, [r1, 0x2]
+ lsls r0, 26
+ cmp r0, 0
+ blt _08127AC4
+_08127AB6:
+ adds r0, r4, 0
+ movs r1, 0x2A
+ bl FieldEffectStop
+ b _08127B08
+ .align 2, 0
+_08127AC0: .4byte gMapObjects
+_08127AC4:
+ ldrb r0, [r1, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ mov r1, sp
+ ldrb r2, [r1]
+ lsls r1, r2, 3
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r5
+ ldrb r2, [r1, 0x4]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ ldr r2, _08127B10
+ adds r1, r2
+ ldrh r2, [r1, 0x20]
+ strh r2, [r4, 0x20]
+ ldrh r0, [r0, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ ldrh r2, [r1, 0x22]
+ adds r0, r2
+ subs r0, 0x8
+ strh r0, [r4, 0x22]
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0x1
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_806487C
+_08127B08:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127B10: .4byte gSprites
+ thumb_func_end sub_8127A7C
+
+ thumb_func_start sub_8127B14
+sub_8127B14: @ 8127B14
+ push {r4,lr}
+ ldr r4, _08127B74
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127B78
+ ldr r0, [r0, 0x44]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r4, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _08127B6C
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08127B7C
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ movs r0, 0x13
+ strh r0, [r2, 0x2E]
+_08127B6C:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127B74: .4byte gUnknown_0202FF84
+_08127B78: .4byte gFieldEffectObjectTemplatePointers
+_08127B7C: .4byte gSprites
+ thumb_func_end sub_8127B14
+
+ thumb_func_start sub_8127B80
+sub_8127B80: @ 8127B80
+ push {r4,lr}
+ ldr r4, _08127BE0
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127BE4
+ ldr r0, [r0, 0x48]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r4, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _08127BD8
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08127BE8
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ movs r0, 0x14
+ strh r0, [r2, 0x2E]
+_08127BD8:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127BE0: .4byte gUnknown_0202FF84
+_08127BE4: .4byte gFieldEffectObjectTemplatePointers
+_08127BE8: .4byte gSprites
+ thumb_func_end sub_8127B80
+
+ thumb_func_start sub_8127BEC
+sub_8127BEC: @ 8127BEC
+ push {r4,lr}
+ ldr r4, _08127C4C
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127C50
+ ldr r0, [r0, 0x4C]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r4, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _08127C44
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08127C54
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ movs r0, 0x15
+ strh r0, [r2, 0x2E]
+_08127C44:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127C4C: .4byte gUnknown_0202FF84
+_08127C50: .4byte gFieldEffectObjectTemplatePointers
+_08127C54: .4byte gSprites
+ thumb_func_end sub_8127BEC
+
+ thumb_func_start sub_8127C58
+sub_8127C58: @ 8127C58
+ push {r4,lr}
+ ldr r4, _08127CB8
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127CBC
+ ldr r0, [r0, 0x50]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r4, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _08127CB0
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08127CC0
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ movs r0, 0x16
+ strh r0, [r2, 0x2E]
+_08127CB0:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127CB8: .4byte gUnknown_0202FF84
+_08127CBC: .4byte gFieldEffectObjectTemplatePointers
+_08127CC0: .4byte gSprites
+ thumb_func_end sub_8127C58
+
+ thumb_func_start ash
+ash: @ 8127CC4
+ push {r4,lr}
+ lsls r2, 16
+ lsrs r2, 16
+ ldr r4, _08127CF4
+ lsls r0, 16
+ asrs r0, 16
+ str r0, [r4]
+ lsls r1, 16
+ asrs r1, 16
+ str r1, [r4, 0x4]
+ movs r0, 0x52
+ str r0, [r4, 0x8]
+ movs r0, 0x1
+ str r0, [r4, 0xC]
+ str r2, [r4, 0x10]
+ lsls r3, 16
+ asrs r3, 16
+ str r3, [r4, 0x14]
+ movs r0, 0x7
+ bl FieldEffectStart
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127CF4: .4byte gUnknown_0202FF84
+ thumb_func_end ash
+
+ thumb_func_start oei_ash
+oei_ash: @ 8127CF8
+ push {r4,r5,lr}
+ sub sp, 0x4
+ ldr r5, _08127D78
+ ldrh r1, [r5]
+ mov r0, sp
+ strh r1, [r0]
+ ldrh r0, [r5, 0x4]
+ mov r4, sp
+ adds r4, 0x2
+ strh r0, [r4]
+ mov r0, sp
+ adds r1, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127D7C
+ ldr r0, [r0, 0x18]
+ mov r1, sp
+ movs r2, 0
+ ldrsh r1, [r1, r2]
+ movs r3, 0
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r5, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _08127D6E
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08127D80
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r5, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ ldr r0, [r5]
+ strh r0, [r2, 0x30]
+ ldr r0, [r5, 0x4]
+ strh r0, [r2, 0x32]
+ ldr r0, [r5, 0x10]
+ strh r0, [r2, 0x34]
+ ldr r0, [r5, 0x14]
+ strh r0, [r2, 0x36]
+_08127D6E:
+ movs r0, 0
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127D78: .4byte gUnknown_0202FF84
+_08127D7C: .4byte gFieldEffectObjectTemplatePointers
+_08127D80: .4byte gSprites
+ thumb_func_end oei_ash
+
+ thumb_func_start sub_8127D84
+sub_8127D84: @ 8127D84
+ push {lr}
+ ldr r2, _08127D9C
+ movs r3, 0x2E
+ ldrsh r1, [r0, r3]
+ lsls r1, 2
+ adds r1, r2
+ ldr r1, [r1]
+ bl _call_via_r1
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127D9C: .4byte gUnknown_08401E48
+ thumb_func_end sub_8127D84
+
+ thumb_func_start sub_8127DA0
+sub_8127DA0: @ 8127DA0
+ push {lr}
+ adds r3, r0, 0
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ subs r2, 0x12
+ ldrb r0, [r2]
+ movs r1, 0x40
+ orrs r0, r1
+ strb r0, [r2]
+ ldrh r0, [r3, 0x36]
+ subs r0, 0x1
+ strh r0, [r3, 0x36]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08127DCA
+ movs r0, 0x1
+ strh r0, [r3, 0x2E]
+_08127DCA:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8127DA0
+
+ thumb_func_start sub_8127DD0
+sub_8127DD0: @ 8127DD0
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ subs r2, 0x12
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ ldrh r2, [r4, 0x34]
+ bl MapGridSetMetatileIdAt
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ bl CurrentMapDrawMetatileAt
+ ldr r2, _08127E28
+ ldr r0, _08127E2C
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ movs r0, 0x2
+ strh r0, [r4, 0x2E]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127E28: .4byte gMapObjects
+_08127E2C: .4byte gPlayerAvatar
+ thumb_func_end sub_8127DD0
+
+ thumb_func_start sub_8127E30
+sub_8127E30: @ 8127E30
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_806487C
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08127E50
+ adds r0, r4, 0
+ movs r1, 0x7
+ bl FieldEffectStop
+_08127E50:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8127E30
+
+ thumb_func_start sub_8127E58
+sub_8127E58: @ 8127E58
+ push {r4,r5,lr}
+ ldr r4, _08127EC0
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _08127EC4
+ ldr r0, [r0, 0x1C]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ movs r3, 0x96
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ cmp r0, 0x40
+ beq _08127EB2
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _08127EC8
+ adds r1, r0
+ adds r3, r1, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r2, 0x2
+ orrs r0, r2
+ strb r0, [r3]
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xF
+ ands r0, r2
+ strb r0, [r1, 0x5]
+ ldr r0, [r4, 0x8]
+ strh r0, [r1, 0x32]
+ ldr r0, _08127ECC
+ strh r0, [r1, 0x34]
+ movs r0, 0x1
+ negs r0, r0
+ strh r0, [r1, 0x3A]
+ strh r0, [r1, 0x3C]
+_08127EB2:
+ movs r0, 0x8
+ bl FieldEffectActiveListRemove
+ adds r0, r5, 0
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08127EC0: .4byte gUnknown_0202FF84
+_08127EC4: .4byte gFieldEffectObjectTemplatePointers
+_08127EC8: .4byte gSprites
+_08127ECC: .4byte 0x0000ffff
+ thumb_func_end sub_8127E58
+
+ thumb_func_start sub_8127ED0
+sub_8127ED0: @ 8127ED0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ ldr r3, _08127EF8
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r3
+ ldrh r0, [r2, 0x2E]
+ movs r3, 0x10
+ negs r3, r3
+ ands r3, r0
+ movs r0, 0xF0
+ lsls r0, 20
+ ands r0, r1
+ lsrs r0, 24
+ orrs r0, r3
+ strh r0, [r2, 0x2E]
+ bx lr
+ .align 2, 0
+_08127EF8: .4byte gSprites
+ thumb_func_end sub_8127ED0
+
+ thumb_func_start sub_8127EFC
+sub_8127EFC: @ 8127EFC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ ldr r3, _08127F24
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r3
+ ldrh r0, [r2, 0x2E]
+ movs r3, 0xF1
+ negs r3, r3
+ ands r3, r0
+ movs r0, 0xF0
+ lsls r0, 20
+ ands r0, r1
+ lsrs r0, 20
+ orrs r3, r0
+ strh r3, [r2, 0x2E]
+ bx lr
+ .align 2, 0
+_08127F24: .4byte gSprites
+ thumb_func_end sub_8127EFC
+
+ thumb_func_start sub_8127F28
+sub_8127F28: @ 8127F28
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ ldr r4, _08127F54
+ lsls r3, r0, 4
+ adds r3, r0
+ lsls r3, 2
+ adds r3, r4
+ ldrh r0, [r3, 0x2E]
+ ldr r4, _08127F58
+ ands r4, r0
+ movs r0, 0xF0
+ lsls r0, 20
+ ands r0, r1
+ lsrs r0, 16
+ orrs r4, r0
+ strh r4, [r3, 0x2E]
+ strh r2, [r3, 0x30]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127F54: .4byte gSprites
+_08127F58: .4byte 0xfffff0ff
+ thumb_func_end sub_8127F28
+
+ thumb_func_start sub_8127F5C
+sub_8127F5C: @ 8127F5C
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0xF
+ ands r0, r1
+ bx lr
+ thumb_func_end sub_8127F5C
+
+ thumb_func_start sub_8127F64
+sub_8127F64: @ 8127F64
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0xF0
+ ands r0, r1
+ lsrs r0, 4
+ bx lr
+ thumb_func_end sub_8127F64
+
+ thumb_func_start sub_8127F70
+sub_8127F70: @ 8127F70
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0xF0
+ lsls r0, 4
+ ands r0, r1
+ lsrs r0, 8
+ bx lr
+ thumb_func_end sub_8127F70
+
+ thumb_func_start sub_8127F7C
+sub_8127F7C: @ 8127F7C
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ movs r1, 0x32
+ ldrsh r0, [r6, r1]
+ lsls r4, r0, 3
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _08127FCC
+ adds r4, r0
+ ldrb r0, [r4, 0x4]
+ lsls r5, r0, 4
+ adds r5, r0
+ lsls r5, 2
+ ldr r0, _08127FD0
+ adds r5, r0
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl sub_8127FD4
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl sub_812800C
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl sub_81280A0
+ ldrb r0, [r5, 0x5]
+ movs r1, 0xC
+ ands r1, r0
+ ldrb r2, [r6, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r6, 0x5]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08127FCC: .4byte gMapObjects
+_08127FD0: .4byte gSprites
+ thumb_func_end sub_8127F7C
+
+ thumb_func_start sub_8127FD4
+sub_8127FD4: @ 8127FD4
+ push {r4,r5,lr}
+ sub sp, 0x8
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldr r1, _08128008
+ mov r0, sp
+ movs r2, 0x5
+ bl memcpy
+ adds r0, r4, 0
+ bl sub_8127F64
+ lsls r0, 24
+ cmp r0, 0
+ bne _08128000
+ ldrb r0, [r5, 0x18]
+ lsrs r0, 4
+ add r0, sp
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl StartSpriteAnimIfDifferent
+_08128000:
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08128008: .4byte gUnknown_08401E54
+ thumb_func_end sub_8127FD4
+
+ thumb_func_start sub_812800C
+sub_812800C: @ 812800C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r4, r1, 0
+ ldrh r2, [r0, 0x10]
+ mov r1, sp
+ strh r2, [r1]
+ ldrh r1, [r0, 0x12]
+ mov r0, sp
+ adds r0, 0x2
+ strh r1, [r0]
+ movs r2, 0x26
+ ldrsh r3, [r4, r2]
+ mov r8, r0
+ cmp r3, 0
+ bne _08128094
+ mov r0, sp
+ movs r5, 0
+ ldrsh r2, [r0, r5]
+ movs r5, 0x3A
+ ldrsh r0, [r4, r5]
+ cmp r2, r0
+ bne _08128048
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r5, 0x3C
+ ldrsh r1, [r4, r5]
+ cmp r0, r1
+ beq _08128094
+_08128048:
+ strh r3, [r4, 0x38]
+ strh r2, [r4, 0x3A]
+ mov r1, r8
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ strh r0, [r4, 0x3C]
+ movs r5, 0x1
+ mov r7, r8
+ mov r6, sp
+_0812805A:
+ adds r0, r5, 0
+ mov r1, sp
+ adds r2, r7, 0
+ bl MoveCoords
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ movs r2, 0
+ ldrsh r1, [r7, r2]
+ bl MapGridGetZCoordAt
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bne _08128080
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ b _08128094
+_08128080:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrh r0, [r4, 0x3A]
+ strh r0, [r6]
+ ldrh r0, [r4, 0x3C]
+ mov r1, r8
+ strh r0, [r1]
+ cmp r5, 0x4
+ bls _0812805A
+_08128094:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812800C
+
+ thumb_func_start sub_81280A0
+sub_81280A0: @ 81280A0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r1, 0
+ adds r4, r2, 0
+ ldr r1, _08128104
+ mov r0, sp
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r4, 0
+ bl sub_8127F5C
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r0, 0
+ cmp r2, 0
+ beq _0812811A
+ ldrh r1, [r4, 0x36]
+ adds r1, 0x1
+ strh r1, [r4, 0x36]
+ movs r3, 0x38
+ ldrsh r0, [r4, r3]
+ lsls r0, 1
+ add r0, sp
+ ldrh r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ bne _081280E0
+ ldrh r0, [r4, 0x34]
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+_081280E0:
+ ldrh r1, [r4, 0x36]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ bne _081280F0
+ ldrh r0, [r4, 0x34]
+ negs r0, r0
+ strh r0, [r4, 0x34]
+_081280F0:
+ cmp r2, 0x2
+ beq _0812811A
+ adds r0, r4, 0
+ bl sub_8127F70
+ lsls r0, 24
+ cmp r0, 0
+ bne _08128108
+ ldrh r0, [r4, 0x26]
+ b _0812810E
+ .align 2, 0
+_08128104: .4byte gUnknown_08401E5A
+_08128108:
+ ldrh r0, [r4, 0x26]
+ ldrh r3, [r4, 0x30]
+ adds r0, r3
+_0812810E:
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r5, 0x22]
+ adds r0, 0x8
+ strh r0, [r4, 0x22]
+_0812811A:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81280A0
+
+ thumb_func_start sub_8128124
+sub_8128124: @ 8128124
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _08128168
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0xFF
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r1, _0812816C
+ adds r2, r1
+ ldr r1, _08128170
+ str r1, [r2, 0x1C]
+ movs r1, 0x3E
+ adds r1, r2
+ mov r12, r1
+ ldrb r1, [r1]
+ movs r3, 0x4
+ orrs r1, r3
+ mov r3, r12
+ strb r1, [r3]
+ strh r4, [r2, 0x2E]
+ movs r1, 0x1
+ strh r1, [r2, 0x30]
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08128168: .4byte gDummySpriteTemplate
+_0812816C: .4byte gSprites
+_08128170: .4byte sub_8128174
+ thumb_func_end sub_8128124
+
+ thumb_func_start sub_8128174
+sub_8128174: @ 8128174
+ push {lr}
+ adds r2, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r2, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _081281B0
+ adds r3, r0, r1
+ ldrh r1, [r2, 0x32]
+ adds r0, r1, 0x1
+ strh r0, [r2, 0x32]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0
+ bne _0812819C
+ ldrh r0, [r2, 0x30]
+ ldrh r1, [r3, 0x26]
+ adds r0, r1
+ strh r0, [r3, 0x26]
+_0812819C:
+ ldrh r1, [r2, 0x32]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ bne _081281AC
+ ldrh r0, [r2, 0x30]
+ negs r0, r0
+ strh r0, [r2, 0x30]
+_081281AC:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081281B0: .4byte gSprites
+ thumb_func_end sub_8128174
+
+ thumb_func_start sub_81281B4
+sub_81281B4: @ 81281B4
+ push {r4,lr}
+ ldr r4, _08128218
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0xC
+ bl sub_8060470
+ ldr r0, _0812821C
+ ldr r0, [r0, 0x24]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _08128210
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _08128220
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ ldr r0, [r4, 0x8]
+ strh r0, [r2, 0x2E]
+ movs r0, 0xA
+ strh r0, [r2, 0x30]
+_08128210:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08128218: .4byte gUnknown_0202FF84
+_0812821C: .4byte gFieldEffectObjectTemplatePointers
+_08128220: .4byte gSprites
+ thumb_func_end sub_81281B4
+
+ thumb_func_start sub_8128224
+sub_8128224: @ 8128224
+ push {r4-r7,lr}
+ ldr r7, _081282D0
+ ldrb r0, [r7]
+ ldrb r1, [r7, 0x4]
+ ldrb r2, [r7, 0x8]
+ bl GetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 3
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _081282D4
+ adds r6, r1, r0
+ ldr r0, _081282D8
+ ldr r0, [r0, 0x74]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x40
+ beq _081282C8
+ ldrb r0, [r6, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ adds r5, r0, 0
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ ldr r4, _081282DC
+ adds r0, r4
+ adds r3, r0, 0
+ adds r3, 0x3E
+ ldrb r1, [r3]
+ movs r2, 0x2
+ orrs r1, r2
+ strb r1, [r3]
+ ldrb r2, [r6, 0x4]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ ldrb r1, [r1, 0x5]
+ movs r2, 0xC
+ ands r2, r1
+ ldrb r3, [r0, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r3
+ orrs r1, r2
+ strb r1, [r0, 0x5]
+ ldr r1, [r7]
+ strh r1, [r0, 0x2E]
+ ldr r1, [r7, 0x4]
+ strh r1, [r0, 0x30]
+ ldr r1, [r7, 0x8]
+ strh r1, [r0, 0x32]
+ ldrb r2, [r6, 0x4]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ ldrh r1, [r1, 0x20]
+ strh r1, [r0, 0x34]
+ ldrb r2, [r6, 0x4]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ ldrh r1, [r1, 0x22]
+ strh r1, [r0, 0x36]
+ ldrh r1, [r5, 0xA]
+ lsls r1, 16
+ asrs r1, 17
+ subs r1, 0x2
+ strh r1, [r0, 0x26]
+ movs r1, 0x2
+ bl SeekSpriteAnim
+_081282C8:
+ movs r0, 0
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081282D0: .4byte gUnknown_0202FF84
+_081282D4: .4byte gMapObjects
+_081282D8: .4byte gFieldEffectObjectTemplatePointers
+_081282DC: .4byte gSprites
+ thumb_func_end sub_8128224
+
+ thumb_func_start sub_81282E0
+sub_81282E0: @ 81282E0
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x32]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812831A
+ ldr r2, _08128324
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r2
+ ldrb r0, [r1, 0x2]
+ lsls r0, 27
+ cmp r0, 0
+ blt _08128328
+_0812831A:
+ adds r0, r4, 0
+ movs r1, 0x27
+ bl FieldEffectStop
+ b _0812839A
+ .align 2, 0
+_08128324: .4byte gMapObjects
+_08128328:
+ ldr r2, _081283A4
+ ldrb r1, [r1, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r5, [r0, 0x22]
+ ldrh r6, [r0, 0x20]
+ movs r2, 0x20
+ ldrsh r1, [r0, r2]
+ movs r2, 0x34
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _08128350
+ lsls r0, r5, 16
+ asrs r0, 16
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ beq _0812836A
+_08128350:
+ strh r6, [r4, 0x34]
+ strh r5, [r4, 0x36]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0812836A
+ adds r0, r4, 0
+ movs r1, 0
+ bl StartSpriteAnim
+_0812836A:
+ strh r6, [r4, 0x20]
+ strh r5, [r4, 0x22]
+ ldr r3, _081283A4
+ ldr r2, _081283A8
+ 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
+ adds r0, 0x43
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_806487C
+_0812839A:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081283A4: .4byte gSprites
+_081283A8: .4byte gMapObjects
+ thumb_func_end sub_81282E0
+
+ thumb_func_start sub_81283AC
+sub_81283AC: @ 81283AC
+ push {r4,lr}
+ ldr r4, _08128404
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0
+ bl sub_8060470
+ ldr r0, _08128408
+ adds r0, 0x88
+ ldr r0, [r0]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _081283FC
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _0812840C
+ adds r1, r0
+ adds r3, r1, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r2, 0x2
+ orrs r0, r2
+ strb r0, [r3]
+ ldrb r2, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+_081283FC:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08128404: .4byte gUnknown_0202FF84
+_08128408: .4byte gFieldEffectObjectTemplatePointers
+_0812840C: .4byte gSprites
+ thumb_func_end sub_81283AC
+
+ thumb_func_start sub_8128410
+sub_8128410: @ 8128410
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x80
+ movs r1, 0x80
+ lsls r1, 1
+ ands r0, r1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x22]
+ subs r1, r0
+ strh r1, [r4, 0x22]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_806487C
+ ldrh r1, [r4, 0x3E]
+ ldr r0, _0812844C
+ ands r0, r1
+ cmp r0, 0
+ beq _08128444
+ adds r0, r4, 0
+ movs r1, 0x35
+ bl FieldEffectStop
+_08128444:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812844C: .4byte 0x00001004
+ thumb_func_end sub_8128410
+
+ thumb_func_start sub_8128450
+sub_8128450: @ 8128450
+ push {r4,lr}
+ ldr r4, _081284B8
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x4
+ bl sub_8060470
+ ldr r0, _081284BC
+ ldr r0, [r0, 0x58]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ ldrb r3, [r4, 0x8]
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _081284B0
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _081284C0
+ adds r2, r0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r0, 0x3
+ ldrb r1, [r4, 0xC]
+ ands r1, r0
+ lsls r1, 2
+ ldrb r3, [r2, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ movs r1, 0xF
+ ands r0, r1
+ movs r1, 0x50
+ orrs r0, r1
+ strb r0, [r2, 0x5]
+ movs r0, 0x17
+ strh r0, [r2, 0x2E]
+_081284B0:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081284B8: .4byte gUnknown_0202FF84
+_081284BC: .4byte gFieldEffectObjectTemplatePointers
+_081284C0: .4byte gSprites
+ thumb_func_end sub_8128450
+
+ thumb_func_start ShowTreeDisguiseFieldEffect
+ShowTreeDisguiseFieldEffect: @ 81284C4
+ push {lr}
+ movs r0, 0x1C
+ movs r1, 0x18
+ movs r2, 0x4
+ bl ShowDisguiseFieldEffect
+ pop {r1}
+ bx r1
+ thumb_func_end ShowTreeDisguiseFieldEffect
+
+ thumb_func_start ShowMountainDisguiseFieldEffect
+ShowMountainDisguiseFieldEffect: @ 81284D4
+ push {lr}
+ movs r0, 0x1D
+ movs r1, 0x19
+ movs r2, 0x3
+ bl ShowDisguiseFieldEffect
+ pop {r1}
+ bx r1
+ thumb_func_end ShowMountainDisguiseFieldEffect
+
+ thumb_func_start ShowSandDisguiseFieldEffect
+ShowSandDisguiseFieldEffect: @ 81284E4
+ push {lr}
+ movs r0, 0x24
+ movs r1, 0x1C
+ movs r2, 0x2
+ bl ShowDisguiseFieldEffect
+ pop {r1}
+ bx r1
+ thumb_func_end ShowSandDisguiseFieldEffect
+
+ thumb_func_start ShowDisguiseFieldEffect
+ShowDisguiseFieldEffect: @ 81284F4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r4, r0, 24
+ mov r8, r4
+ lsls r1, 24
+ lsrs r6, r1, 24
+ lsls r2, 24
+ lsrs r7, r2, 24
+ ldr r5, _08128528
+ ldrb r0, [r5]
+ ldrb r1, [r5, 0x4]
+ ldrb r2, [r5, 0x8]
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812852C
+ adds r0, r4, 0
+ bl FieldEffectActiveListRemove
+ movs r0, 0x40
+ b _08128598
+ .align 2, 0
+_08128528: .4byte gUnknown_0202FF84
+_0812852C:
+ ldr r1, _081285A4
+ lsls r0, r6, 2
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl CreateSpriteAtEnd
+ mov r1, sp
+ strb r0, [r1]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _08128594
+ mov r0, sp
+ ldrb r0, [r0]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ ldr r0, _081285A8
+ adds r2, r0
+ movs r0, 0x3E
+ adds r0, r2
+ mov r12, r0
+ ldrb r3, [r0]
+ lsls r1, r3, 30
+ lsrs r1, 31
+ adds r1, 0x1
+ movs r0, 0x1
+ ands r1, r0
+ lsls r1, 1
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ lsls r3, r7, 4
+ ldrb r1, [r2, 0x5]
+ movs r0, 0xF
+ ands r0, r1
+ orrs r0, r3
+ strb r0, [r2, 0x5]
+ mov r0, r8
+ strh r0, [r2, 0x30]
+ ldr r0, [r5]
+ strh r0, [r2, 0x32]
+ ldr r0, [r5, 0x4]
+ strh r0, [r2, 0x34]
+ ldr r0, [r5, 0x8]
+ strh r0, [r2, 0x36]
+_08128594:
+ mov r0, sp
+ ldrb r0, [r0]
+_08128598:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_081285A4: .4byte gFieldEffectObjectTemplatePointers
+_081285A8: .4byte gSprites
+ thumb_func_end ShowDisguiseFieldEffect
+
+ thumb_func_start sub_81285AC
+sub_81285AC: @ 81285AC
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x32]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r5, 0x34]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r5, 0x36]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ beq _081285DC
+ ldrh r1, [r5, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl FieldEffectStop
+_081285DC:
+ ldr r4, _08128694
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrb r0, [r0, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ mov r1, sp
+ ldrb r2, [r1]
+ lsls r1, r2, 3
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ ldrb r1, [r1, 0x4]
+ lsls r2, r1, 4
+ adds r2, r1
+ lsls r2, 2
+ ldr r1, _08128698
+ adds r2, r1
+ adds r1, r2, 0
+ adds r1, 0x3E
+ ldrb r1, [r1]
+ movs r3, 0x3E
+ adds r3, r5
+ mov r12, r3
+ movs r3, 0x4
+ ands r3, r1
+ mov r1, r12
+ ldrb r4, [r1]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r4
+ orrs r1, r3
+ mov r3, r12
+ strb r1, [r3]
+ ldrh r1, [r2, 0x20]
+ strh r1, [r5, 0x20]
+ ldrh r0, [r0, 0xA]
+ lsls r0, 16
+ asrs r0, 17
+ ldrh r1, [r2, 0x22]
+ adds r0, r1
+ subs r0, 0x10
+ strh r0, [r5, 0x22]
+ adds r2, 0x43
+ ldrb r0, [r2]
+ subs r0, 0x1
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldrh r1, [r5, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0x1
+ bne _0812865C
+ adds r0, r1, 0x1
+ strh r0, [r5, 0x2E]
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+_0812865C:
+ movs r3, 0x2E
+ ldrsh r0, [r5, r3]
+ ldrh r2, [r5, 0x2E]
+ cmp r0, 0x2
+ bne _08128678
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _08128678
+ movs r0, 0x1
+ strh r0, [r5, 0x3C]
+_08128678:
+ lsls r0, r2, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _0812868C
+ ldrh r1, [r5, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ bl FieldEffectStop
+_0812868C:
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08128694: .4byte gMapObjects
+_08128698: .4byte gSprites
+ thumb_func_end sub_81285AC
+
+ thumb_func_start sub_812869C
+sub_812869C: @ 812869C
+ push {lr}
+ adds r1, r0, 0
+ adds r0, 0x21
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _081286BA
+ ldr r2, _081286C0
+ ldrb r1, [r1, 0x1A]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x2E]
+ adds r1, 0x1
+ strh r1, [r0, 0x2E]
+_081286BA:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081286C0: .4byte gSprites
+ thumb_func_end sub_812869C
+
+ thumb_func_start sub_81286C4
+sub_81286C4: @ 81286C4
+ push {lr}
+ adds r2, r0, 0
+ adds r2, 0x21
+ ldrb r1, [r2]
+ cmp r1, 0x2
+ beq _081286FA
+ cmp r1, 0
+ beq _081286FA
+ ldrb r1, [r0, 0x1A]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _081286EC
+ adds r1, r0, r1
+ movs r3, 0x3C
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _081286F0
+ movs r0, 0
+ b _081286FC
+ .align 2, 0
+_081286EC: .4byte gSprites
+_081286F0:
+ movs r0, 0x2
+ strb r0, [r2]
+ ldrh r0, [r1, 0x2E]
+ adds r0, 0x1
+ strh r0, [r1, 0x2E]
+_081286FA:
+ movs r0, 0x1
+_081286FC:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_81286C4
+
+ thumb_func_start sub_8128700
+sub_8128700: @ 8128700
+ push {r4,lr}
+ ldr r4, _08128768
+ ldr r0, [r4]
+ adds r0, 0x7
+ str r0, [r4]
+ ldr r0, [r4, 0x4]
+ adds r0, 0x7
+ str r0, [r4, 0x4]
+ adds r1, r4, 0x4
+ adds r0, r4, 0
+ movs r2, 0x8
+ movs r3, 0x8
+ bl sub_8060470
+ ldr r0, _0812876C
+ adds r0, 0x8C
+ ldr r0, [r0]
+ movs r2, 0
+ ldrsh r1, [r4, r2]
+ movs r3, 0x4
+ ldrsh r2, [r4, r3]
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _08128760
+ ldr r0, _08128770
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ movs r0, 0x3
+ ldrb r2, [r4, 0x8]
+ ands r2, r0
+ lsls r2, 2
+ ldrb r3, [r1, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1, 0x5]
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x2
+ orrs r0, r2
+ strb r0, [r1]
+_08128760:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08128768: .4byte gUnknown_0202FF84
+_0812876C: .4byte gFieldEffectObjectTemplatePointers
+_08128770: .4byte gSprites
+ thumb_func_end sub_8128700
+
+ thumb_func_start sub_8128774
+sub_8128774: @ 8128774
+ push {lr}
+ adds r2, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bne _081287A8
+ adds r0, r2, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _081287A0
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r3]
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+_081287A0:
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ beq _081287BE
+_081287A8:
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x22
+ ble _081287BE
+ adds r0, r2, 0
+ movs r1, 0x36
+ bl FieldEffectStop
+_081287BE:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8128774
+
+ thumb_func_start sub_81287C4
+sub_81287C4: @ 81287C4
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _081287E2
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldEffectStop
+ b _081287F8
+_081287E2:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_806487C
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r4, 0
+ movs r2, 0
+ bl SetObjectSubpriorityByZCoord
+_081287F8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81287C4
+
+ thumb_func_start sub_8128800
+sub_8128800: @ 8128800
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0812881E
+ ldrh r1, [r2, 0x2E]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r2, 0
+ bl FieldEffectStop
+ b _08128826
+_0812881E:
+ adds r0, r2, 0
+ movs r1, 0
+ bl sub_806487C
+_08128826:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8128800
+
+ thumb_func_start sub_812882C
+sub_812882C: @ 812882C
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r0, r1, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r2, 24
+ lsrs r2, 24
+ adds r1, r6, 0
+ bl SetObjectSubpriorityByZCoord
+ movs r7, 0
+_08128842:
+ lsls r0, r7, 3
+ adds r0, r7
+ lsls r0, 2
+ ldr r1, _081288DC
+ adds r4, r0, r1
+ ldrb r0, [r4]
+ lsls r0, 31
+ cmp r0, 0
+ beq _081288E4
+ ldrb r0, [r4, 0x5]
+ bl GetFieldObjectGraphicsInfo
+ ldrb r1, [r4, 0x4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _081288E0
+ adds r5, r0, r1
+ adds r0, r6, 0
+ adds r0, 0x28
+ movs r2, 0
+ ldrsb r2, [r0, r2]
+ ldrh r0, [r6, 0x20]
+ adds r1, r0, r2
+ subs r0, r2
+ lsls r0, 16
+ lsrs r4, r0, 16
+ lsls r1, 16
+ asrs r1, 16
+ movs r0, 0x20
+ ldrsh r2, [r5, r0]
+ cmp r1, r2
+ bge _081288E4
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r0, r2
+ ble _081288E4
+ adds r0, r5, 0
+ adds r0, 0x29
+ movs r3, 0
+ ldrsb r3, [r0, r3]
+ ldrh r2, [r5, 0x22]
+ adds r2, r3
+ ldrh r4, [r5, 0x22]
+ adds r0, r6, 0
+ adds r0, 0x29
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ ldrh r0, [r6, 0x22]
+ subs r0, r1
+ lsls r0, 16
+ asrs r0, 16
+ adds r3, r0, r3
+ lsls r2, 16
+ asrs r2, 16
+ lsls r3, 16
+ asrs r3, 16
+ cmp r2, r3
+ blt _081288BC
+ cmp r2, r0
+ bge _081288E4
+_081288BC:
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r0, r3
+ ble _081288E4
+ adds r2, r6, 0
+ adds r2, 0x43
+ adds r0, r5, 0
+ adds r0, 0x43
+ ldrb r1, [r0]
+ ldrb r0, [r2]
+ cmp r0, r1
+ bhi _081288E4
+ adds r0, r1, 0x2
+ strb r0, [r2]
+ b _081288EE
+ .align 2, 0
+_081288DC: .4byte gMapObjects
+_081288E0: .4byte gSprites
+_081288E4:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0xF
+ bls _08128842
+_081288EE:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812882C
+
+ .align 2, 0 @ Don't pad with nop.