summaryrefslogtreecommitdiff
path: root/asm/fire.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/fire.s')
-rw-r--r--asm/fire.s2500
1 files changed, 2500 insertions, 0 deletions
diff --git a/asm/fire.s b/asm/fire.s
new file mode 100644
index 000000000..f4b89300a
--- /dev/null
+++ b/asm/fire.s
@@ -0,0 +1,2500 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80AC90C
+sub_80AC90C: @ 80AC90C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080AC940 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x2E]
+ movs r0, 0x3C
+ strh r0, [r4, 0x30]
+ movs r0, 0x9
+ strh r0, [r4, 0x32]
+ movs r0, 0x1E
+ strh r0, [r4, 0x34]
+ movs r0, 0xFE
+ lsls r0, 8
+ strh r0, [r4, 0x36]
+ ldr r1, _080AC944 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r1, _080AC948 @ =sub_8074AE0
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC940: .4byte gBattleAnimArgs
+_080AC944: .4byte DestroyAnimSprite
+_080AC948: .4byte sub_8074AE0
+ thumb_func_end sub_80AC90C
+
+ thumb_func_start sub_80AC94C
+sub_80AC94C: @ 80AC94C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080AC984 @ =gBattleAnimArgs
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl sub_8074FF8
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x32]
+ ldr r0, _080AC988 @ =sub_8074D00
+ str r0, [r4, 0x1C]
+ ldr r1, _080AC98C @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC984: .4byte gBattleAnimArgs
+_080AC988: .4byte sub_8074D00
+_080AC98C: .4byte DestroyAnimSprite
+ thumb_func_end sub_80AC94C
+
+ thumb_func_start sub_80AC990
+sub_80AC990: @ 80AC990
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r0, _080AC9C4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AC9CC
+ ldr r2, _080AC9C8 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r2, 0x8]
+ negs r0, r0
+ strh r0, [r4, 0x32]
+ adds r1, r2, 0
+ b _080AC9E2
+ .align 2, 0
+_080AC9C4: .4byte gBattleAnimAttacker
+_080AC9C8: .4byte gBattleAnimArgs
+_080AC9CC:
+ ldr r1, _080AC9F8 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x32]
+_080AC9E2:
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x36]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r4, 0x34]
+ ldr r0, _080AC9FC @ =sub_80ACA6C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AC9F8: .4byte gBattleAnimArgs
+_080AC9FC: .4byte sub_80ACA6C
+ thumb_func_end sub_80AC990
+
+ thumb_func_start sub_80ACA00
+sub_80ACA00: @ 80ACA00
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080ACA2C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ACA34
+ ldr r2, _080ACA30 @ =gBattleAnimArgs
+ ldrh r0, [r4, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r2, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r4, 0x32]
+ adds r1, r2, 0
+ b _080ACA4C
+ .align 2, 0
+_080ACA2C: .4byte gBattleAnimAttacker
+_080ACA30: .4byte gBattleAnimArgs
+_080ACA34:
+ ldr r1, _080ACA64 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x8]
+ negs r0, r0
+ strh r0, [r4, 0x32]
+_080ACA4C:
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x36]
+ ldrh r0, [r1, 0xA]
+ strh r0, [r4, 0x34]
+ ldr r0, _080ACA68 @ =sub_80ACA6C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACA64: .4byte gBattleAnimArgs
+_080ACA68: .4byte sub_80ACA6C
+ thumb_func_end sub_80ACA00
+
+ thumb_func_start sub_80ACA6C
+sub_80ACA6C: @ 80ACA6C
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x36
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bge _080ACA92
+ ldrh r0, [r2, 0x32]
+ ldrh r1, [r2, 0x24]
+ adds r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x34]
+ ldrh r3, [r2, 0x26]
+ adds r0, r3
+ strh r0, [r2, 0x26]
+_080ACA92:
+ movs r0, 0x2E
+ ldrsh r1, [r2, r0]
+ movs r3, 0x30
+ ldrsh r0, [r2, r3]
+ cmp r1, r0
+ bne _080ACAA4
+ adds r0, r2, 0
+ bl move_anim_8074EE0
+_080ACAA4:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACA6C
+
+ thumb_func_start sub_80ACAA8
+sub_80ACAA8: @ 80ACAA8
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r0, _080ACACC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ACAD4
+ ldr r0, _080ACAD0 @ =gBattleAnimArgs
+ ldrh r1, [r4, 0x20]
+ ldrh r2, [r0]
+ subs r1, r2
+ strh r1, [r4, 0x20]
+ b _080ACAE6
+ .align 2, 0
+_080ACACC: .4byte gBattleAnimAttacker
+_080ACAD0: .4byte gBattleAnimArgs
+_080ACAD4:
+ ldr r0, _080ACB14 @ =gBattleAnimArgs
+ ldrh r1, [r0]
+ ldrh r2, [r4, 0x20]
+ adds r1, r2
+ strh r1, [r4, 0x20]
+ adds r2, r4, 0
+ adds r2, 0x43
+ movs r1, 0x8
+ strb r1, [r2]
+_080ACAE6:
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r4, 0x22]
+ ldrh r0, [r2, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r2, 0x6]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r2, 0xA]
+ strh r0, [r4, 0x34]
+ ldrh r0, [r2, 0xC]
+ strh r0, [r4, 0x36]
+ strh r1, [r4, 0x38]
+ ldr r0, _080ACB18 @ =sub_80ACB1C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACB14: .4byte gBattleAnimArgs
+_080ACB18: .4byte sub_80ACB1C
+ thumb_func_end sub_80ACAA8
+
+ thumb_func_start sub_80ACB1C
+sub_80ACB1C: @ 80ACB1C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080ACBA4
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ ldr r0, _080ACB88 @ =0x00002710
+ cmp r1, r0
+ ble _080ACB3A
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1
+ strb r0, [r1]
+_080ACB3A:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x38]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r2, [r4, 0x30]
+ adds r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x38]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r2, [r4, 0x30]
+ adds r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ ldrh r2, [r4, 0x2E]
+ adds r1, r0, r2
+ strh r1, [r4, 0x2E]
+ ldrh r0, [r4, 0x36]
+ ldrh r2, [r4, 0x38]
+ adds r0, r2
+ strh r0, [r4, 0x38]
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0xFF
+ ble _080ACB90
+ ldr r2, _080ACB8C @ =0xffffff00
+ b _080ACB98
+ .align 2, 0
+_080ACB88: .4byte 0x00002710
+_080ACB8C: .4byte 0xffffff00
+_080ACB90:
+ cmp r0, 0
+ bge _080ACB9C
+ movs r2, 0x80
+ lsls r2, 1
+_080ACB98:
+ adds r0, r1, r2
+ strh r0, [r4, 0x2E]
+_080ACB9C:
+ ldrh r0, [r4, 0x34]
+ subs r0, 0x1
+ strh r0, [r4, 0x34]
+ b _080ACBAA
+_080ACBA4:
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080ACBAA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACB1C
+
+ thumb_func_start sub_80ACBB0
+sub_80ACBB0: @ 80ACBB0
+ push {lr}
+ movs r1, 0
+ strh r1, [r0, 0x20]
+ strh r1, [r0, 0x22]
+ movs r1, 0x3C
+ strh r1, [r0, 0x2E]
+ movs r1, 0x8C
+ strh r1, [r0, 0x32]
+ movs r1, 0x50
+ strh r1, [r0, 0x36]
+ ldr r1, _080ACBD4 @ =sub_8075590
+ str r1, [r0, 0x1C]
+ ldr r1, _080ACBD8 @ =DestroyAnimSprite
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACBD4: .4byte sub_8075590
+_080ACBD8: .4byte DestroyAnimSprite
+ thumb_func_end sub_80ACBB0
+
+ thumb_func_start sub_80ACBDC
+sub_80ACBDC: @ 80ACBDC
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ ldr r5, _080ACC34 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ adds r4, r0, 0
+ ldr r0, _080ACC38 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ bne _080ACC22
+ movs r0, 0x2
+ bl GetBattlerAtPosition
+ ldrb r1, [r5]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r1, r0
+ beq _080ACC1A
+ movs r0, 0x3
+ bl GetBattlerAtPosition
+ ldrb r1, [r5]
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r1, r0
+ bne _080ACC22
+_080ACC1A:
+ ldr r1, _080ACC3C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080ACC22:
+ ldr r1, _080ACC40 @ =sub_8075F0C
+ str r1, [r6, 0x1C]
+ adds r0, r6, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACC34: .4byte gBattleAnimAttacker
+_080ACC38: .4byte gBattleAnimTarget
+_080ACC3C: .4byte gBattleAnimArgs
+_080ACC40: .4byte sub_8075F0C
+ thumb_func_end sub_80ACBDC
+
+ thumb_func_start sub_80ACC44
+sub_80ACC44: @ 80ACC44
+ ldr r2, _080ACC58 @ =gBattleAnimArgs
+ ldrh r1, [r2]
+ negs r1, r1
+ strh r1, [r2]
+ ldrh r1, [r2, 0x4]
+ negs r1, r1
+ strh r1, [r2, 0x4]
+ ldr r1, _080ACC5C @ =sub_8075F0C
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_080ACC58: .4byte gBattleAnimArgs
+_080ACC5C: .4byte sub_8075F0C
+ thumb_func_end sub_80ACC44
+
+ thumb_func_start sub_80ACC60
+sub_80ACC60: @ 80ACC60
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080ACC80 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ movs r1, 0
+ strh r0, [r4, 0x3C]
+ strh r1, [r4, 0x2E]
+ ldr r0, _080ACC84 @ =sub_80ACC88
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACC80: .4byte gBattleAnimArgs
+_080ACC84: .4byte sub_80ACC88
+ thumb_func_end sub_80ACC60
+
+ thumb_func_start sub_80ACC88
+sub_80ACC88: @ 80ACC88
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl sub_80ACD7C
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x12
+ bne _080ACCD2
+ movs r0, 0x19
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x30]
+ ldr r4, _080ACCD8 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ ldr r0, _080ACCDC @ =sub_80ACCE0
+ str r0, [r5, 0x1C]
+_080ACCD2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACCD8: .4byte gBattleAnimTarget
+_080ACCDC: .4byte sub_80ACCE0
+ thumb_func_end sub_80ACC88
+
+ thumb_func_start sub_80ACCE0
+sub_80ACCE0: @ 80ACCE0
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080ACD28
+ movs r4, 0
+ strh r4, [r6, 0x2E]
+ ldr r5, _080ACD20 @ =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x22]
+ strh r4, [r6, 0x26]
+ strh r4, [r6, 0x24]
+ ldr r1, _080ACD24 @ =sub_80ACD58
+ str r1, [r6, 0x1C]
+ adds r0, r6, 0
+ bl _call_via_r1
+ b _080ACD52
+ .align 2, 0
+_080ACD20: .4byte gBattleAnimTarget
+_080ACD24: .4byte sub_80ACD58
+_080ACD28:
+ movs r1, 0x3C
+ ldrsh r0, [r6, r1]
+ movs r1, 0x1C
+ bl Sin
+ ldrh r1, [r6, 0x24]
+ adds r0, r1
+ strh r0, [r6, 0x24]
+ movs r1, 0x3C
+ ldrsh r0, [r6, r1]
+ movs r1, 0x1C
+ bl Cos
+ ldrh r1, [r6, 0x26]
+ adds r0, r1
+ strh r0, [r6, 0x26]
+ ldrh r0, [r6, 0x3C]
+ adds r0, 0x14
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r6, 0x3C]
+_080ACD52:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACCE0
+
+ thumb_func_start sub_80ACD58
+sub_80ACD58: @ 80ACD58
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80ACD7C
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080ACD74
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080ACD74:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACD58
+
+ thumb_func_start sub_80ACD7C
+sub_80ACD7C: @ 80ACD7C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r1, 0x1C
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r1, 0x1C
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x14
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACD7C
+
+ thumb_func_start sub_80ACDA8
+sub_80ACDA8: @ 80ACDA8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080ACDDC @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x32]
+ ldr r1, _080ACDE0 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080ACDE4 @ =sub_8074CD0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACDDC: .4byte gBattleAnimArgs
+_080ACDE0: .4byte DestroyAnimSprite
+_080ACDE4: .4byte sub_8074CD0
+ thumb_func_end sub_80ACDA8
+
+ thumb_func_start sub_80ACDE8
+sub_80ACDE8: @ 80ACDE8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r1, _080ACE1C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x2E]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080ACE20 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080ACE24 @ =sub_80ACE28
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACE1C: .4byte gBattleAnimArgs
+_080ACE20: .4byte sub_8074C44
+_080ACE24: .4byte sub_80ACE28
+ thumb_func_end sub_80ACDE8
+
+ thumb_func_start sub_80ACE28
+sub_80ACE28: @ 80ACE28
+ push {lr}
+ adds r3, r0, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r3]
+ ldrh r1, [r0, 0x30]
+ movs r2, 0
+ strh r1, [r0, 0x2E]
+ strh r2, [r0, 0x30]
+ ldr r1, _080ACE4C @ =sub_80ACE50
+ str r1, [r0, 0x1C]
+ bl _call_via_r1
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACE4C: .4byte sub_80ACE50
+ thumb_func_end sub_80ACE28
+
+ thumb_func_start sub_80ACE50
+sub_80ACE50: @ 80ACE50
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x32]
+ lsls r1, 16
+ asrs r1, 24
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x32]
+ lsls r1, 16
+ asrs r1, 24
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0xA
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0xD0
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080ACE9C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080ACE9C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACE50
+
+ thumb_func_start sub_80ACEA4
+sub_80ACEA4: @ 80ACEA4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080ACF04 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r4, 0x26]
+ strh r5, [r4, 0x8]
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0xC]
+ strh r5, [r4, 0xE]
+ ldr r2, _080ACF08 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x22]
+ strh r0, [r4, 0x10]
+ ldr r0, _080ACF0C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x12]
+ strh r5, [r4, 0x14]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl sub_80758E0
+ ldr r0, _080ACF10 @ =sub_80ACF14
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ACF04: .4byte gTasks
+_080ACF08: .4byte gSprites
+_080ACF0C: .4byte gBattleAnimAttacker
+_080ACF10: .4byte sub_80ACF14
+ thumb_func_end sub_80ACEA4
+
+ thumb_func_start sub_80ACF14
+sub_80ACF14: @ 80ACF14
+ push {r4,r5,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080ACF3C @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x6
+ bls _080ACF30
+ b _080AD1EE
+_080ACF30:
+ lsls r0, 2
+ ldr r1, _080ACF40 @ =_080ACF44
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080ACF3C: .4byte gTasks
+_080ACF40: .4byte _080ACF44
+ .align 2, 0
+_080ACF44:
+ .4byte _080ACF60
+ .4byte _080ACF86
+ .4byte _080AD038
+ .4byte _080AD098
+ .4byte _080AD0B6
+ .4byte _080AD18C
+ .4byte _080AD1E0
+_080ACF60:
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0x80
+ lsls r3, 1
+ movs r0, 0xE0
+ str r0, [sp]
+ movs r0, 0x80
+ lsls r0, 2
+ str r0, [sp, 0x4]
+ movs r0, 0x20
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ adds r2, r3, 0
+ bl sub_80765D4
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+_080ACF86:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080ACFCE
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080ACFBC
+ ldr r2, _080ACFB8 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0x3
+ b _080ACFCC
+ .align 2, 0
+_080ACFB8: .4byte gSprites
+_080ACFBC:
+ ldr r2, _080AD030 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _080AD034 @ =0x0000fffd
+_080ACFCC:
+ strh r1, [r0, 0x24]
+_080ACFCE:
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080ACFFC
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _080ACFFC
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ ldr r2, _080AD030 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x22]
+ adds r1, 0x1
+ strh r1, [r0, 0x22]
+_080ACFFC:
+ adds r0, r4, 0
+ bl sub_8076640
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ beq _080AD00C
+ b _080AD1EE
+_080AD00C:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8076440
+ ldr r2, _080AD030 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r5, [r0, 0x24]
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0xC]
+ strh r5, [r4, 0xE]
+ b _080AD1D4
+ .align 2, 0
+_080AD030: .4byte gSprites
+_080AD034: .4byte 0x0000fffd
+_080AD038:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bgt _080AD048
+ b _080AD1EE
+_080AD048:
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080AD072
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0x80
+ lsls r3, 2
+ movs r0, 0xC0
+ lsls r0, 1
+ str r0, [sp]
+ movs r0, 0xF0
+ str r0, [sp, 0x4]
+ movs r0, 0x6
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r2, 0xE0
+ bl sub_80765D4
+ b _080AD092
+_080AD072:
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r3, 0x80
+ lsls r3, 2
+ movs r0, 0xC0
+ lsls r0, 1
+ str r0, [sp]
+ movs r0, 0xC0
+ str r0, [sp, 0x4]
+ movs r0, 0x6
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r2, 0xE0
+ bl sub_80765D4
+_080AD092:
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080AD1D4
+_080AD098:
+ adds r0, r4, 0
+ bl sub_8076640
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AD0A6
+ b _080AD1EE
+_080AD0A6:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ adds r1, r5, 0
+ movs r2, 0x6
+ bl sub_80AD1F8
+ b _080AD1D4
+_080AD0B6:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AD104
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD0F0
+ ldr r2, _080AD0EC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ adds r1, 0x3
+ b _080AD102
+ .align 2, 0
+_080AD0EC: .4byte gSprites
+_080AD0F0:
+ ldr r2, _080AD13C @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ subs r1, 0x3
+_080AD102:
+ strh r1, [r0, 0x26]
+_080AD104:
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x18
+ ble _080AD1EE
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080AD140
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0xC0
+ lsls r2, 1
+ movs r0, 0x80
+ lsls r0, 1
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ movs r0, 0x8
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r3, 0xF0
+ bl sub_80765D4
+ b _080AD15E
+ .align 2, 0
+_080AD13C: .4byte gSprites
+_080AD140:
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ movs r2, 0xC0
+ lsls r2, 1
+ movs r0, 0x80
+ lsls r0, 1
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ movs r0, 0x8
+ str r0, [sp, 0x8]
+ adds r0, r4, 0
+ movs r3, 0xC0
+ bl sub_80765D4
+_080AD15E:
+ ldrh r1, [r4, 0xC]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD17C
+ ldr r2, _080AD188 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x26]
+ subs r1, 0x3
+ strh r1, [r0, 0x26]
+_080AD17C:
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ strh r0, [r4, 0xE]
+ b _080AD1D4
+ .align 2, 0
+_080AD188: .4byte gSprites
+_080AD18C:
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080AD1A8
+ ldr r2, _080AD1DC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x22]
+ subs r1, 0x1
+ strh r1, [r0, 0x22]
+_080AD1A8:
+ adds r0, r4, 0
+ bl sub_8076640
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _080AD1EE
+ ldr r2, _080AD1DC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x10]
+ strh r1, [r0, 0x22]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8075980
+ strh r5, [r4, 0xC]
+_080AD1D4:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080AD1EE
+ .align 2, 0
+_080AD1DC: .4byte gSprites
+_080AD1E0:
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AD1EE
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080AD1EE:
+ add sp, 0xC
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80ACF14
+
+ thumb_func_start sub_80AD1F8
+sub_80AD1F8: @ 80AD1F8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r2, 24
+ lsrs r2, 24
+ mov r8, r2
+ adds r0, r4, 0
+ bl sub_80AD374
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ ldr r1, _080AD248 @ =gSprites
+ lsls r0, r4, 4
+ adds r0, r4
+ lsls r0, 2
+ adds r0, r1
+ ldrh r4, [r0, 0x20]
+ ldr r0, _080AD24C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AD250
+ adds r0, r4, 0
+ subs r0, 0xC
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0x1
+ b _080AD25A
+ .align 2, 0
+_080AD248: .4byte gSprites
+_080AD24C: .4byte gBattleAnimAttacker
+_080AD250:
+ adds r0, r4, 0
+ adds r0, 0x10
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0xFF
+_080AD25A:
+ movs r6, 0
+ movs r5, 0
+ lsls r4, 16
+ str r4, [sp, 0x8]
+ mov r1, r9
+ lsls r1, 16
+ str r1, [sp, 0x4]
+ ldr r2, _080AD314 @ =gUnknown_83E5E44
+ mov r9, r2
+ lsls r0, 24
+ asrs r0, 24
+ str r0, [sp]
+ mov r3, r8
+ lsls r3, 1
+ mov r10, r3
+_080AD278:
+ ldr r0, _080AD318 @ =gUnknown_83E5E2C
+ ldr r2, [sp, 0x8]
+ asrs r1, r2, 16
+ ldr r3, [sp, 0x4]
+ asrs r2, r3, 16
+ movs r3, 0x2
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _080AD2FA
+ ldr r1, _080AD31C @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r4, r0, r1
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ lsls r0, r5, 2
+ adds r0, 0x40
+ adds r1, r0
+ ldr r3, _080AD320 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r3, _080AD324 @ =0xfffffc00
+ adds r0, r3, 0
+ ands r2, r0
+ orrs r2, r1
+ strh r2, [r4, 0x4]
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0x4
+ bls _080AD2C2
+ movs r5, 0
+_080AD2C2:
+ lsls r2, r6, 2
+ mov r1, r9
+ adds r0, r2, r1
+ ldrh r0, [r0]
+ ldr r3, [sp]
+ adds r1, r0, 0
+ muls r1, r3
+ lsls r1, 16
+ asrs r1, 16
+ ldr r0, _080AD328 @ =gUnknown_83E5E46
+ adds r2, r0
+ movs r3, 0
+ ldrsh r2, [r2, r3]
+ adds r0, r4, 0
+ bl sub_80AD3C8
+ strh r7, [r4, 0x3A]
+ mov r0, r8
+ strh r0, [r4, 0x3C]
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ add r0, r10
+ ldr r1, _080AD32C @ =gTasks+0x8
+ adds r0, r1
+ ldrh r1, [r0]
+ adds r1, 0x1
+ strh r1, [r0]
+_080AD2FA:
+ adds r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r6, 0x6
+ bls _080AD278
+ add sp, 0xC
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AD314: .4byte gUnknown_83E5E44
+_080AD318: .4byte gUnknown_83E5E2C
+_080AD31C: .4byte gSprites
+_080AD320: .4byte 0x000003ff
+_080AD324: .4byte 0xfffffc00
+_080AD328: .4byte gUnknown_83E5E46
+_080AD32C: .4byte gTasks+0x8
+ thumb_func_end sub_80AD1F8
+
+ thumb_func_start sub_80AD330
+sub_80AD330: @ 80AD330
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80AD3E4
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD36A
+ ldr r3, _080AD370 @ =gTasks
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x3A
+ ldrsh r2, [r4, r0]
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r1, r0
+ adds r3, 0x8
+ adds r1, r3
+ ldrh r0, [r1]
+ subs r0, 0x1
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroySprite
+_080AD36A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AD370: .4byte gTasks
+ thumb_func_end sub_80AD330
+
+ thumb_func_start sub_80AD374
+sub_80AD374: @ 80AD374
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080AD3AC @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrh r2, [r1, 0x26]
+ ldrh r0, [r1, 0x22]
+ adds r2, r0
+ adds r1, 0x29
+ movs r0, 0
+ ldrsb r0, [r1, r0]
+ adds r0, r2
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r0, _080AD3B0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AD3B4
+ lsls r0, r4, 16
+ movs r1, 0x94
+ lsls r1, 15
+ b _080AD3BA
+ .align 2, 0
+_080AD3AC: .4byte gSprites
+_080AD3B0: .4byte gBattleAnimAttacker
+_080AD3B4:
+ lsls r0, r4, 16
+ movs r1, 0xB0
+ lsls r1, 14
+_080AD3BA:
+ adds r0, r1
+ lsrs r4, r0, 16
+ adds r0, r4, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80AD374
+
+ thumb_func_start sub_80AD3C8
+sub_80AD3C8: @ 80AD3C8
+ movs r3, 0
+ strh r3, [r0, 0x2E]
+ strh r3, [r0, 0x30]
+ ldrh r3, [r0, 0x20]
+ lsls r3, 3
+ strh r3, [r0, 0x32]
+ ldrh r3, [r0, 0x22]
+ lsls r3, 3
+ strh r3, [r0, 0x34]
+ lsls r1, 3
+ strh r1, [r0, 0x36]
+ lsls r2, 3
+ strh r2, [r0, 0x38]
+ bx lr
+ thumb_func_end sub_80AD3C8
+
+ thumb_func_start sub_80AD3E4
+sub_80AD3E4: @ 80AD3E4
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080AD40E
+ movs r0, 0
+ strh r0, [r2, 0x2E]
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ ldrh r0, [r2, 0x30]
+ adds r1, r0, 0
+ muls r1, r0
+ adds r0, r1, 0
+ ldrh r3, [r2, 0x34]
+ adds r0, r3
+ strh r0, [r2, 0x34]
+_080AD40E:
+ ldrh r0, [r2, 0x36]
+ ldrh r1, [r2, 0x32]
+ adds r0, r1
+ strh r0, [r2, 0x32]
+ lsls r0, 16
+ asrs r0, 19
+ strh r0, [r2, 0x20]
+ ldrh r1, [r2, 0x38]
+ ldrh r3, [r2, 0x34]
+ adds r1, r3
+ strh r1, [r2, 0x34]
+ lsls r1, 16
+ asrs r3, r1, 19
+ strh r3, [r2, 0x22]
+ adds r0, 0x8
+ lsls r0, 16
+ movs r1, 0x80
+ lsls r1, 17
+ cmp r0, r1
+ bhi _080AD444
+ adds r1, r3, 0
+ movs r0, 0x8
+ negs r0, r0
+ cmp r1, r0
+ blt _080AD444
+ cmp r1, 0x78
+ ble _080AD450
+_080AD444:
+ adds r0, r2, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_080AD450:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AD3E4
+
+ thumb_func_start sub_80AD454
+sub_80AD454: @ 80AD454
+ push {r4,r5,lr}
+ ldr r3, _080AD498 @ =gBattleAnimArgs
+ ldrh r1, [r3]
+ movs r2, 0
+ strh r1, [r0, 0x20]
+ ldrh r1, [r3, 0x2]
+ strh r1, [r0, 0x22]
+ strh r2, [r0, 0x2E]
+ strh r2, [r0, 0x30]
+ strh r2, [r0, 0x32]
+ ldrh r1, [r3, 0x4]
+ strh r1, [r0, 0x3A]
+ ldrh r1, [r3, 0x6]
+ strh r1, [r0, 0x3C]
+ ldrh r4, [r0, 0x4]
+ lsls r2, r4, 22
+ lsrs r2, 22
+ movs r5, 0x8
+ ldrsh r1, [r3, r5]
+ lsls r1, 4
+ adds r2, r1
+ ldr r3, _080AD49C @ =0x000003ff
+ adds r1, r3, 0
+ ands r2, r1
+ ldr r1, _080AD4A0 @ =0xfffffc00
+ ands r1, r4
+ orrs r1, r2
+ strh r1, [r0, 0x4]
+ ldr r1, _080AD4A4 @ =sub_80AD4A8
+ str r1, [r0, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AD498: .4byte gBattleAnimArgs
+_080AD49C: .4byte 0x000003ff
+_080AD4A0: .4byte 0xfffffc00
+_080AD4A4: .4byte sub_80AD4A8
+ thumb_func_end sub_80AD454
+
+ thumb_func_start sub_80AD4A8
+sub_80AD4A8: @ 80AD4A8
+ push {r4,lr}
+ adds r2, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x1
+ beq _080AD4DA
+ cmp r0, 0x1
+ bgt _080AD4BE
+ cmp r0, 0
+ beq _080AD4C4
+ b _080AD538
+_080AD4BE:
+ cmp r0, 0x2
+ beq _080AD4F8
+ b _080AD538
+_080AD4C4:
+ ldrh r1, [r2, 0x3A]
+ movs r3, 0x3A
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ beq _080AD4D4
+ subs r0, r1, 0x1
+ strh r0, [r2, 0x3A]
+ b _080AD538
+_080AD4D4:
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+_080AD4DA:
+ ldrh r0, [r2, 0x22]
+ adds r0, 0x8
+ strh r0, [r2, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r3, [r2, 0x3C]
+ movs r4, 0x3C
+ ldrsh r1, [r2, r4]
+ cmp r0, r1
+ blt _080AD538
+ strh r3, [r2, 0x22]
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ b _080AD538
+_080AD4F8:
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AD524
+ movs r0, 0
+ strh r0, [r2, 0x30]
+ ldrh r0, [r2, 0x32]
+ adds r0, 0x1
+ strh r0, [r2, 0x32]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD520
+ ldr r0, _080AD51C @ =0x0000fffd
+ b _080AD522
+ .align 2, 0
+_080AD51C: .4byte 0x0000fffd
+_080AD520:
+ movs r0, 0x3
+_080AD522:
+ strh r0, [r2, 0x26]
+_080AD524:
+ ldrh r0, [r2, 0x34]
+ adds r0, 0x1
+ strh r0, [r2, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ ble _080AD538
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080AD538:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AD4A8
+
+ thumb_func_start sub_80AD540
+sub_80AD540: @ 80AD540
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080AD5B4
+ cmp r0, 0x1
+ bgt _080AD556
+ cmp r0, 0
+ beq _080AD55C
+ b _080AD682
+_080AD556:
+ cmp r0, 0x2
+ beq _080AD612
+ b _080AD682
+_080AD55C:
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075160
+ ldr r4, _080AD584 @ =gBattleAnimArgs
+ ldrb r1, [r4, 0x4]
+ adds r0, r5, 0
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x4]
+ strh r0, [r5, 0x3C]
+ ldr r0, _080AD588 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AD58C
+ movs r0, 0x4
+ b _080AD58E
+ .align 2, 0
+_080AD584: .4byte gBattleAnimArgs
+_080AD588: .4byte gBattleAnimAttacker
+_080AD58C:
+ ldr r0, _080AD5AC @ =0x0000fffc
+_080AD58E:
+ strh r0, [r5, 0x36]
+ ldr r0, _080AD5B0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ movs r1, 0x3
+ ands r1, r0
+ lsls r1, 2
+ ldrb r2, [r5, 0x5]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r5, 0x5]
+ b _080AD60A
+ .align 2, 0
+_080AD5AC: .4byte 0x0000fffc
+_080AD5B0: .4byte gBattleAnimTarget
+_080AD5B4:
+ ldrh r0, [r5, 0x30]
+ adds r0, 0xC0
+ strh r0, [r5, 0x30]
+ ldr r0, _080AD5D4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080AD5D8
+ ldrh r0, [r5, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ negs r0, r0
+ b _080AD5DE
+ .align 2, 0
+_080AD5D4: .4byte gBattleAnimAttacker
+_080AD5D8:
+ ldrh r0, [r5, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+_080AD5DE:
+ strh r0, [r5, 0x26]
+ movs r2, 0x32
+ ldrsh r0, [r5, r2]
+ movs r2, 0x36
+ ldrsh r1, [r5, r2]
+ bl Sin
+ strh r0, [r5, 0x24]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x4
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080AD682
+ movs r0, 0
+ strh r0, [r5, 0x34]
+_080AD60A:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080AD682
+_080AD612:
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ movs r2, 0x36
+ ldrsh r1, [r5, r2]
+ bl Sin
+ adds r2, r0, 0
+ movs r3, 0
+ strh r2, [r5, 0x24]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x4
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080AD682
+ ldrh r0, [r5, 0x20]
+ adds r1, r2, r0
+ strh r1, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r3, [r5, 0x26]
+ strh r3, [r5, 0x24]
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r5, 0x2E]
+ strh r1, [r5, 0x30]
+ ldr r4, _080AD688 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrh r0, [r5, 0x22]
+ strh r0, [r5, 0x34]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl sub_8075678
+ ldr r0, _080AD68C @ =sub_80AD690
+ str r0, [r5, 0x1C]
+_080AD682:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AD688: .4byte gBattleAnimTarget
+_080AD68C: .4byte sub_80AD690
+ thumb_func_end sub_80AD540
+
+ thumb_func_start sub_80AD690
+sub_80AD690: @ 80AD690
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AD6E8
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ movs r1, 0x10
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x38]
+ adds r0, r2, 0x4
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x38]
+ ldrh r0, [r4, 0x38]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0
+ beq _080AD6C6
+ cmp r2, 0xC4
+ ble _080AD6EE
+_080AD6C6:
+ lsls r0, 16
+ cmp r0, 0
+ ble _080AD6EE
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080AD6EE
+ ldr r0, _080AD6E4 @ =gUnknown_2037F24
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ movs r0, 0x89
+ bl PlaySE12WithPanning
+ b _080AD6EE
+ .align 2, 0
+_080AD6E4: .4byte gUnknown_2037F24
+_080AD6E8:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AD6EE:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AD690
+
+ thumb_func_start sub_80AD6F4
+sub_80AD6F4: @ 80AD6F4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r1, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080AD70C
+ ldr r0, _080AD778 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x30]
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x2E]
+_080AD70C:
+ movs r0, 0xC0
+ lsls r0, 1
+ adds r1, r0, 0
+ ldrh r2, [r4, 0x34]
+ adds r1, r2
+ strh r1, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0xA0
+ strh r0, [r4, 0x36]
+ movs r2, 0x30
+ ldrsh r0, [r4, r2]
+ lsls r1, 16
+ asrs r1, 24
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ ldrh r1, [r4, 0x36]
+ lsls r1, 16
+ asrs r1, 24
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x7
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080AD7A8
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x83
+ bls _080AD780
+ ldr r0, _080AD77C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ 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]
+ b _080AD7C4
+ .align 2, 0
+_080AD778: .4byte gBattleAnimArgs
+_080AD77C: .4byte gBattleAnimTarget
+_080AD780:
+ ldr r0, _080AD7A4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+ b _080AD7C4
+ .align 2, 0
+_080AD7A4: .4byte gBattleAnimTarget
+_080AD7A8:
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x40
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x83
+ bls _080AD7BC
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1D
+ b _080AD7C2
+_080AD7BC:
+ adds r1, r4, 0
+ adds r1, 0x43
+ movs r0, 0x1F
+_080AD7C2:
+ strb r0, [r1]
+_080AD7C4:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x14
+ ble _080AD7EC
+ 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]
+_080AD7EC:
+ movs r2, 0x32
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x1E
+ bne _080AD7FA
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080AD7FA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80AD6F4
+
+ thumb_func_start sub_80AD800
+sub_80AD800: @ 80AD800
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080AD860 @ =gTasks
+ adds r4, r1, r0
+ ldr r0, _080AD864 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _080AD826
+ movs r1, 0x1
+_080AD826:
+ strh r1, [r4, 0x20]
+ ldr r0, _080AD868 @ =gBattleAnimTarget
+ ldrb r1, [r0]
+ movs r0, 0x2
+ eors r0, r1
+ bl sub_8072DF0
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ strh r0, [r4, 0x22]
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x24]
+ movs r0, 0x3
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _080AD86C @ =sub_80AD870
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080AD860: .4byte gTasks
+_080AD864: .4byte gBattleAnimAttacker
+_080AD868: .4byte gBattleAnimTarget
+_080AD86C: .4byte sub_80AD870
+ thumb_func_end sub_80AD800
+
+ thumb_func_start sub_80AD870
+sub_80AD870: @ 80AD870
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080AD894 @ =gTasks
+ adds r2, r0, r1
+ movs r0, 0x8
+ ldrsh r3, [r2, r0]
+ cmp r3, 0x1
+ beq _080AD938
+ cmp r3, 0x1
+ bgt _080AD898
+ cmp r3, 0
+ beq _080AD8A6
+ b _080ADA98
+ .align 2, 0
+_080AD894: .4byte gTasks
+_080AD898:
+ cmp r3, 0x2
+ bne _080AD89E
+ b _080AD9C0
+_080AD89E:
+ cmp r3, 0x3
+ bne _080AD8A4
+ b _080ADA54
+_080AD8A4:
+ b _080ADA98
+_080AD8A6:
+ movs r1, 0x20
+ ldrsh r0, [r2, r1]
+ lsls r0, 1
+ ldrh r5, [r2, 0x1C]
+ adds r0, r5
+ strh r0, [r2, 0x1C]
+ ldrh r0, [r2, 0xA]
+ adds r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AD8D8
+ strh r3, [r2, 0xA]
+ ldrh r0, [r2, 0xC]
+ adds r0, 0x1
+ strh r0, [r2, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD8D4
+ movs r0, 0x2
+ b _080AD8D6
+_080AD8D4:
+ ldr r0, _080AD930 @ =0x0000fffe
+_080AD8D6:
+ strh r0, [r2, 0x1E]
+_080AD8D8:
+ movs r1, 0
+ strh r1, [r2, 0xE]
+ movs r7, 0x22
+ ldrsh r0, [r2, r7]
+ cmp r1, r0
+ bge _080AD91A
+ ldr r4, _080AD934 @ =gSprites
+ adds r3, r2, 0
+ adds r3, 0x8
+_080AD8EA:
+ movs r1, 0xE
+ ldrsh r0, [r2, r1]
+ adds r0, 0xE
+ lsls r0, 1
+ adds r0, r3, r0
+ movs r5, 0
+ ldrsh r0, [r0, r5]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r2, 0x1E]
+ ldrh r7, [r2, 0x1C]
+ adds r0, r7
+ strh r0, [r1, 0x24]
+ ldrh r0, [r2, 0xE]
+ adds r0, 0x1
+ strh r0, [r2, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ movs r5, 0x22
+ ldrsh r1, [r2, r5]
+ cmp r0, r1
+ blt _080AD8EA
+_080AD91A:
+ ldrh r0, [r2, 0x1A]
+ adds r0, 0x1
+ strh r0, [r2, 0x1A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ beq _080AD92A
+ b _080ADA98
+_080AD92A:
+ movs r0, 0
+ strh r0, [r2, 0x1A]
+ b _080ADA44
+ .align 2, 0
+_080AD930: .4byte 0x0000fffe
+_080AD934: .4byte gSprites
+_080AD938:
+ ldrh r0, [r2, 0xA]
+ adds r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _080AD960
+ movs r0, 0
+ strh r0, [r2, 0xA]
+ ldrh r0, [r2, 0xC]
+ adds r0, 0x1
+ strh r0, [r2, 0xC]
+ ands r0, r3
+ lsls r0, 16
+ cmp r0, 0
+ beq _080AD95C
+ movs r0, 0x2
+ b _080AD95E
+_080AD95C:
+ ldr r0, _080AD9B8 @ =0x0000fffe
+_080AD95E:
+ strh r0, [r2, 0x1E]
+_080AD960:
+ movs r1, 0
+ strh r1, [r2, 0xE]
+ movs r7, 0x22
+ ldrsh r0, [r2, r7]
+ cmp r1, r0
+ bge _080AD9A2
+ ldr r4, _080AD9BC @ =gSprites
+ adds r3, r2, 0
+ adds r3, 0x8
+_080AD972:
+ movs r1, 0xE
+ ldrsh r0, [r2, r1]
+ adds r0, 0xE
+ lsls r0, 1
+ adds r0, r3, r0
+ movs r5, 0
+ ldrsh r0, [r0, r5]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r2, 0x1E]
+ ldrh r7, [r2, 0x1C]
+ adds r0, r7
+ strh r0, [r1, 0x24]
+ ldrh r0, [r2, 0xE]
+ adds r0, 0x1
+ strh r0, [r2, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ movs r5, 0x22
+ ldrsh r1, [r2, r5]
+ cmp r0, r1
+ blt _080AD972
+_080AD9A2:
+ ldrh r0, [r2, 0x1A]
+ adds r0, 0x1
+ strh r0, [r2, 0x1A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x60
+ bne _080ADA98
+ movs r0, 0
+ strh r0, [r2, 0x1A]
+ b _080ADA44
+ .align 2, 0
+_080AD9B8: .4byte 0x0000fffe
+_080AD9BC: .4byte gSprites
+_080AD9C0:
+ movs r7, 0x20
+ ldrsh r1, [r2, r7]
+ lsls r1, 1
+ ldrh r0, [r2, 0x1C]
+ subs r0, r1
+ strh r0, [r2, 0x1C]
+ ldrh r0, [r2, 0xA]
+ adds r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080AD9F4
+ movs r0, 0
+ strh r0, [r2, 0xA]
+ ldrh r0, [r2, 0xC]
+ adds r0, 0x1
+ strh r0, [r2, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080AD9F0
+ strh r3, [r2, 0x1E]
+ b _080AD9F4
+_080AD9F0:
+ ldr r0, _080ADA4C @ =0x0000fffe
+ strh r0, [r2, 0x1E]
+_080AD9F4:
+ movs r1, 0
+ strh r1, [r2, 0xE]
+ movs r3, 0x22
+ ldrsh r0, [r2, r3]
+ cmp r1, r0
+ bge _080ADA36
+ ldr r4, _080ADA50 @ =gSprites
+ adds r3, r2, 0
+ adds r3, 0x8
+_080ADA06:
+ movs r5, 0xE
+ ldrsh r0, [r2, r5]
+ adds r0, 0xE
+ lsls r0, 1
+ adds r0, r3, r0
+ movs r7, 0
+ ldrsh r0, [r0, r7]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r2, 0x1E]
+ ldrh r5, [r2, 0x1C]
+ adds r0, r5
+ strh r0, [r1, 0x24]
+ ldrh r0, [r2, 0xE]
+ adds r0, 0x1
+ strh r0, [r2, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ movs r7, 0x22
+ ldrsh r1, [r2, r7]
+ cmp r0, r1
+ blt _080ADA06
+_080ADA36:
+ ldrh r0, [r2, 0x1A]
+ adds r0, 0x1
+ strh r0, [r2, 0x1A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ bne _080ADA98
+_080ADA44:
+ ldrh r0, [r2, 0x8]
+ adds r0, 0x1
+ strh r0, [r2, 0x8]
+ b _080ADA98
+ .align 2, 0
+_080ADA4C: .4byte 0x0000fffe
+_080ADA50: .4byte gSprites
+_080ADA54:
+ movs r1, 0
+ strh r1, [r2, 0xE]
+ movs r3, 0x22
+ ldrsh r0, [r2, r3]
+ cmp r1, r0
+ bge _080ADA92
+ ldr r6, _080ADAA0 @ =gSprites
+ adds r3, r2, 0
+ adds r3, 0x8
+ movs r5, 0
+_080ADA68:
+ movs r7, 0xE
+ ldrsh r0, [r2, r7]
+ adds r0, 0xE
+ lsls r0, 1
+ adds r0, r3, r0
+ movs r7, 0
+ ldrsh r1, [r0, r7]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ strh r5, [r0, 0x24]
+ ldrh r0, [r2, 0xE]
+ adds r0, 0x1
+ strh r0, [r2, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ movs r7, 0x22
+ ldrsh r1, [r2, r7]
+ cmp r0, r1
+ blt _080ADA68
+_080ADA92:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080ADA98:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADAA0: .4byte gSprites
+ thumb_func_end sub_80AD870
+
+ thumb_func_start sub_80ADAA4
+sub_80ADAA4: @ 80ADAA4
+ push {r4,lr}
+ sub sp, 0x10
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ lsls r0, 4
+ ldr r1, _080ADAD4 @ =gBattleAnimArgs
+ ldrb r2, [r1]
+ ldrh r3, [r1, 0x2]
+ movs r1, 0x10
+ bl BlendPalette
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ add sp, 0x10
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADAD4: .4byte gBattleAnimArgs
+ thumb_func_end sub_80ADAA4
+
+ thumb_func_start sub_80ADAD8
+sub_80ADAD8: @ 80ADAD8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080ADB30 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r2, r0, r1
+ movs r3, 0x8
+ ldrsh r0, [r2, r3]
+ mov r9, r1
+ ldr r4, _080ADB34 @ =gBattleAnimArgs
+ mov r8, r4
+ cmp r0, 0
+ bne _080ADB0E
+ ldrh r0, [r4]
+ strh r0, [r2, 0xA]
+ ldrh r0, [r4, 0x2]
+ strh r0, [r2, 0xC]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r2, 0xE]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r2, 0x10]
+_080ADB0E:
+ ldrh r0, [r2, 0x8]
+ adds r0, 0x1
+ strh r0, [r2, 0x8]
+ ldr r1, _080ADB38 @ =gBattlerSpriteIds
+ ldr r0, _080ADB3C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r6, [r0]
+ movs r5, 0x10
+ ldrsh r0, [r2, r5]
+ cmp r0, 0
+ bne _080ADB44
+ ldr r4, _080ADB40 @ =gUnknown_83E5EFC
+ movs r1, 0x8
+ ldrsh r0, [r2, r1]
+ b _080ADB4A
+ .align 2, 0
+_080ADB30: .4byte gTasks
+_080ADB34: .4byte gBattleAnimArgs
+_080ADB38: .4byte gBattlerSpriteIds
+_080ADB3C: .4byte gBattleAnimTarget
+_080ADB40: .4byte gUnknown_83E5EFC
+_080ADB44:
+ ldr r4, _080ADB90 @ =gUnknown_83E5F0C
+ movs r3, 0x8
+ ldrsh r0, [r2, r3]
+_080ADB4A:
+ movs r1, 0xA
+ bl __modsi3
+ lsls r0, 16
+ asrs r0, 16
+ adds r0, r4
+ ldrb r5, [r0]
+ lsls r0, r7, 2
+ adds r1, r0, r7
+ lsls r1, 3
+ add r1, r9
+ movs r4, 0xE
+ ldrsh r1, [r1, r4]
+ mov r12, r0
+ cmp r1, 0x1
+ bne _080ADB98
+ ldr r2, _080ADB94 @ =gSprites
+ lsls r3, r6, 4
+ adds r0, r3, r6
+ lsls r0, 2
+ adds r0, r2
+ mov r10, r0
+ mov r0, r8
+ movs r4, 0x2
+ ldrsh r1, [r0, r4]
+ lsls r0, r5, 24
+ asrs r0, 24
+ muls r0, r1
+ cmp r0, 0
+ bge _080ADB88
+ negs r0, r0
+_080ADB88:
+ mov r5, r10
+ strh r0, [r5, 0x26]
+ b _080ADBB2
+ .align 2, 0
+_080ADB90: .4byte gUnknown_83E5F0C
+_080ADB94: .4byte gSprites
+_080ADB98:
+ ldr r3, _080ADBE8 @ =gSprites
+ lsls r4, r6, 4
+ adds r2, r4, r6
+ lsls r2, 2
+ adds r2, r3
+ lsls r0, r5, 24
+ asrs r0, 24
+ mov r5, r8
+ ldrh r1, [r5, 0x2]
+ muls r0, r1
+ strh r0, [r2, 0x24]
+ adds r2, r3, 0
+ adds r3, r4, 0
+_080ADBB2:
+ mov r1, r12
+ adds r0, r1, r7
+ lsls r0, 3
+ add r0, r9
+ movs r4, 0x8
+ ldrsh r1, [r0, r4]
+ movs r5, 0xA
+ ldrsh r0, [r0, r5]
+ cmp r1, r0
+ bne _080ADBD8
+ adds r0, r3, r6
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0
+ strh r1, [r0, 0x24]
+ strh r1, [r0, 0x26]
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080ADBD8:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080ADBE8: .4byte gSprites
+ thumb_func_end sub_80ADAD8
+
+ .align 2, 0 @ Don't pad with nop.