summaryrefslogtreecommitdiff
path: root/asm/battle_anim_mon_movement.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_anim_mon_movement.s')
-rw-r--r--asm/battle_anim_mon_movement.s2588
1 files changed, 2588 insertions, 0 deletions
diff --git a/asm/battle_anim_mon_movement.s b/asm/battle_anim_mon_movement.s
new file mode 100644
index 000000000..14cc141cd
--- /dev/null
+++ b/asm/battle_anim_mon_movement.s
@@ -0,0 +1,2588 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80989F8
+sub_80989F8: @ 80989F8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r4, _08098A18 @ =gBattleAnimArgs
+ ldrb r0, [r4]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0xFF
+ bne _08098A1C
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ b _08098A58
+ .align 2, 0
+_08098A18: .4byte gBattleAnimArgs
+_08098A1C:
+ ldr r1, _08098A60 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ ldrh r1, [r4, 0x2]
+ strh r1, [r0, 0x24]
+ ldrh r1, [r4, 0x4]
+ strh r1, [r0, 0x26]
+ ldr r1, _08098A64 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ strh r2, [r0, 0x8]
+ ldrh r1, [r4, 0x6]
+ strh r1, [r0, 0xA]
+ ldrh r1, [r4, 0x8]
+ strh r1, [r0, 0xC]
+ ldrh r1, [r4, 0x8]
+ strh r1, [r0, 0xE]
+ ldrh r1, [r4, 0x2]
+ strh r1, [r0, 0x10]
+ ldrh r1, [r4, 0x4]
+ strh r1, [r0, 0x12]
+ ldr r1, _08098A68 @ =sub_8098A6C
+ str r1, [r0]
+ adds r0, r5, 0
+ bl _call_via_r1
+_08098A58:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08098A60: .4byte gSprites
+_08098A64: .4byte gTasks
+_08098A68: .4byte sub_8098A6C
+ thumb_func_end sub_80989F8
+
+ thumb_func_start sub_8098A6C
+sub_8098A6C: @ 8098A6C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08098AA8 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r3, r0, r1
+ ldrh r0, [r3, 0xE]
+ movs r2, 0xE
+ ldrsh r5, [r3, r2]
+ adds r7, r1, 0
+ cmp r5, 0
+ bne _08098B12
+ ldr r2, _08098AAC @ =gSprites
+ movs r6, 0x8
+ ldrsh r1, [r3, r6]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r2
+ movs r6, 0x24
+ ldrsh r0, [r1, r6]
+ adds r6, r2, 0
+ cmp r0, 0
+ bne _08098AB0
+ ldrh r0, [r3, 0x10]
+ strh r0, [r1, 0x24]
+ b _08098AB2
+ .align 2, 0
+_08098AA8: .4byte gTasks
+_08098AAC: .4byte gSprites
+_08098AB0:
+ strh r5, [r1, 0x24]
+_08098AB2:
+ lsls r2, r4, 2
+ adds r0, r2, r4
+ lsls r0, 3
+ adds r3, r0, r7
+ movs r0, 0x8
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r6
+ movs r5, 0x26
+ ldrsh r0, [r1, r5]
+ cmp r0, 0
+ bne _08098AD2
+ ldrh r0, [r3, 0x12]
+ b _08098AD4
+_08098AD2:
+ movs r0, 0
+_08098AD4:
+ strh r0, [r1, 0x26]
+ adds r0, r2, r4
+ lsls r0, 3
+ adds r2, r0, r7
+ ldrh r0, [r2, 0xC]
+ strh r0, [r2, 0xE]
+ ldrh r0, [r2, 0xA]
+ subs r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r3, r0, 16
+ cmp r3, 0
+ bne _08098B16
+ movs r0, 0x8
+ ldrsh r1, [r2, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ strh r3, [r0, 0x24]
+ movs r5, 0x8
+ ldrsh r1, [r2, r5]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r6
+ strh r3, [r0, 0x26]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _08098B16
+_08098B12:
+ subs r0, 0x1
+ strh r0, [r3, 0xE]
+_08098B16:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8098A6C
+
+ thumb_func_start sub_8098B1C
+sub_8098B1C: @ 8098B1C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r6, 0
+ ldr r2, _08098B44 @ =gBattleAnimArgs
+ ldrh r0, [r2]
+ movs r3, 0
+ ldrsh r1, [r2, r3]
+ cmp r1, 0x3
+ bgt _08098B48
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xFF
+ bne _08098B9E
+ b _08098BA2
+ .align 2, 0
+_08098B44: .4byte gBattleAnimArgs
+_08098B48:
+ cmp r1, 0x8
+ beq _08098B94
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x5
+ beq _08098B68
+ cmp r0, 0x5
+ bgt _08098B5E
+ cmp r0, 0x4
+ beq _08098B64
+ b _08098B70
+_08098B5E:
+ cmp r0, 0x6
+ beq _08098B6C
+ b _08098B70
+_08098B64:
+ movs r0, 0
+ b _08098B72
+_08098B68:
+ movs r0, 0x2
+ b _08098B72
+_08098B6C:
+ movs r0, 0x1
+ b _08098B72
+_08098B70:
+ movs r0, 0x3
+_08098B72:
+ bl GetBattlerAtPosition
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ bne _08098B88
+ movs r6, 0x1
+_08098B88:
+ ldr r0, _08098B90 @ =gBattlerSpriteIds
+ adds r0, r4, r0
+ b _08098B9C
+ .align 2, 0
+_08098B90: .4byte gBattlerSpriteIds
+_08098B94:
+ ldr r1, _08098BAC @ =gBattlerSpriteIds
+ ldr r0, _08098BB0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+_08098B9C:
+ ldrb r3, [r0]
+_08098B9E:
+ cmp r6, 0
+ beq _08098BB4
+_08098BA2:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ b _08098BF2
+ .align 2, 0
+_08098BAC: .4byte gBattlerSpriteIds
+_08098BB0: .4byte gBattleAnimAttacker
+_08098BB4:
+ ldr r1, _08098BF8 @ =gSprites
+ lsls r0, r3, 4
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ ldr r2, _08098BFC @ =gBattleAnimArgs
+ ldrh r1, [r2, 0x2]
+ strh r1, [r0, 0x24]
+ ldrh r1, [r2, 0x4]
+ strh r1, [r0, 0x26]
+ ldr r1, _08098C00 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ strh r3, [r0, 0x8]
+ ldrh r1, [r2, 0x6]
+ strh r1, [r0, 0xA]
+ ldrh r1, [r2, 0x8]
+ strh r1, [r0, 0xC]
+ ldrh r1, [r2, 0x8]
+ strh r1, [r0, 0xE]
+ ldrh r1, [r2, 0x2]
+ strh r1, [r0, 0x10]
+ ldrh r1, [r2, 0x4]
+ strh r1, [r0, 0x12]
+ ldr r1, _08098C04 @ =sub_8098C08
+ str r1, [r0]
+ adds r0, r5, 0
+ bl _call_via_r1
+_08098BF2:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08098BF8: .4byte gSprites
+_08098BFC: .4byte gBattleAnimArgs
+_08098C00: .4byte gTasks
+_08098C04: .4byte sub_8098C08
+ thumb_func_end sub_8098B1C
+
+ thumb_func_start sub_8098C08
+sub_8098C08: @ 8098C08
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _08098C4C @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r3, r0, r1
+ ldrh r2, [r3, 0xE]
+ movs r4, 0xE
+ ldrsh r0, [r3, r4]
+ mov r12, r1
+ cmp r0, 0
+ bne _08098CC0
+ ldr r2, _08098C50 @ =gSprites
+ movs r7, 0x8
+ ldrsh r1, [r3, r7]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r4, r0, r2
+ movs r0, 0x24
+ ldrsh r1, [r4, r0]
+ ldrh r5, [r3, 0x10]
+ movs r7, 0x10
+ ldrsh r0, [r3, r7]
+ adds r7, r2, 0
+ cmp r1, r0
+ bne _08098C54
+ negs r0, r5
+ strh r0, [r4, 0x24]
+ b _08098C56
+ .align 2, 0
+_08098C4C: .4byte gTasks
+_08098C50: .4byte gSprites
+_08098C54:
+ strh r5, [r4, 0x24]
+_08098C56:
+ lsls r3, r6, 2
+ adds r1, r3, r6
+ lsls r1, 3
+ add r1, r12
+ movs r0, 0x8
+ ldrsh r2, [r1, r0]
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r4, r0, r7
+ movs r0, 0x26
+ ldrsh r2, [r4, r0]
+ mov r8, r2
+ ldrh r5, [r1, 0x12]
+ movs r2, 0x12
+ ldrsh r0, [r1, r2]
+ cmp r8, r0
+ bne _08098C80
+ negs r0, r5
+ strh r0, [r4, 0x26]
+ b _08098C82
+_08098C80:
+ strh r5, [r4, 0x26]
+_08098C82:
+ adds r0, r3, r6
+ lsls r0, 3
+ mov r4, r12
+ adds r3, r0, r4
+ ldrh r0, [r3, 0xC]
+ strh r0, [r3, 0xE]
+ ldrh r0, [r3, 0xA]
+ subs r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r2, r0, 16
+ cmp r2, 0
+ bne _08098CC4
+ movs r0, 0x8
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r7
+ strh r2, [r0, 0x24]
+ movs r4, 0x8
+ ldrsh r1, [r3, r4]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r7
+ strh r2, [r0, 0x26]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+ b _08098CC4
+_08098CC0:
+ subs r0, r2, 0x1
+ strh r0, [r3, 0xE]
+_08098CC4:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8098C08
+
+ thumb_func_start sub_8098CD0
+sub_8098CD0: @ 8098CD0
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r4, _08098CF0 @ =gBattleAnimArgs
+ ldrb r0, [r4]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0xFF
+ bne _08098CF4
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ b _08098D42
+ .align 2, 0
+_08098CF0: .4byte gBattleAnimArgs
+_08098CF4:
+ ldr r0, _08098D48 @ =gSprites
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r4, 0x2]
+ ldrh r2, [r1, 0x24]
+ adds r0, r2
+ movs r2, 0
+ strh r0, [r1, 0x24]
+ ldrh r0, [r4, 0x4]
+ ldrh r6, [r1, 0x26]
+ adds r0, r6
+ strh r0, [r1, 0x26]
+ ldr r0, _08098D4C @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ strh r3, [r1, 0x8]
+ strh r2, [r1, 0xA]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r1, 0xC]
+ strh r2, [r1, 0xE]
+ ldrh r0, [r4, 0x8]
+ strh r0, [r1, 0x10]
+ movs r2, 0x2
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ strh r0, [r1, 0x12]
+ movs r6, 0x4
+ ldrsh r0, [r4, r6]
+ lsls r0, 1
+ strh r0, [r1, 0x14]
+ ldr r2, _08098D50 @ =sub_8098D54
+ str r2, [r1]
+ adds r0, r5, 0
+ bl _call_via_r2
+_08098D42:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08098D48: .4byte gSprites
+_08098D4C: .4byte gTasks
+_08098D50: .4byte sub_8098D54
+ thumb_func_end sub_8098CD0
+
+ thumb_func_start sub_8098D54
+sub_8098D54: @ 8098D54
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _08098DAC @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r2, [r4, 0xE]
+ movs r3, 0xE
+ ldrsh r0, [r4, r3]
+ adds r6, r1, 0
+ cmp r0, 0
+ beq _08098D72
+ b _08098E84
+_08098D72:
+ ldrh r1, [r4, 0xA]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08098DB4
+ ldr r2, _08098DB0 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x12]
+ ldrh r3, [r0, 0x24]
+ adds r1, r3
+ strh r1, [r0, 0x24]
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x14]
+ ldrh r3, [r0, 0x26]
+ adds r1, r3
+ strh r1, [r0, 0x26]
+ adds r3, r2, 0
+ b _08098DDE
+ .align 2, 0
+_08098DAC: .4byte gTasks
+_08098DB0: .4byte gSprites
+_08098DB4:
+ ldr r3, _08098E40 @ =gSprites
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r0, 0x24]
+ ldrh r2, [r4, 0x12]
+ subs r1, r2
+ strh r1, [r0, 0x24]
+ movs r2, 0x8
+ ldrsh r1, [r4, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r0, 0x26]
+ ldrh r2, [r4, 0x14]
+ subs r1, r2
+ strh r1, [r0, 0x26]
+_08098DDE:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r6
+ ldrh r0, [r4, 0x10]
+ strh r0, [r4, 0xE]
+ ldrh r0, [r4, 0xA]
+ adds r2, r0, 0x1
+ strh r2, [r4, 0xA]
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r6, 0xC
+ ldrsh r1, [r4, r6]
+ cmp r0, r1
+ blt _08098E88
+ movs r0, 0x1
+ ands r2, r0
+ cmp r2, 0
+ beq _08098E44
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ movs r2, 0x12
+ ldrsh r0, [r4, r2]
+ lsrs r2, r0, 31
+ adds r0, r2
+ asrs r0, 1
+ ldrh r6, [r1, 0x24]
+ adds r0, r6
+ strh r0, [r1, 0x24]
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ lsrs r2, r0, 31
+ adds r0, r2
+ asrs r0, 1
+ ldrh r3, [r1, 0x26]
+ adds r0, r3
+ strh r0, [r1, 0x26]
+ b _08098E7C
+ .align 2, 0
+_08098E40: .4byte gSprites
+_08098E44:
+ movs r6, 0x8
+ ldrsh r0, [r4, r6]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r3
+ movs r0, 0x12
+ ldrsh r1, [r4, r0]
+ lsrs r0, r1, 31
+ adds r1, r0
+ asrs r1, 1
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r3
+ movs r3, 0x14
+ ldrsh r1, [r4, r3]
+ lsrs r0, r1, 31
+ adds r1, r0
+ asrs r1, 1
+ ldrh r0, [r2, 0x26]
+ subs r0, r1
+ strh r0, [r2, 0x26]
+_08098E7C:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ b _08098E88
+_08098E84:
+ subs r0, r2, 0x1
+ strh r0, [r4, 0xE]
+_08098E88:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8098D54
+
+ thumb_func_start sub_8098E90
+sub_8098E90: @ 8098E90
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r5, _08098EE0 @ =gBattleAnimArgs
+ ldrb r0, [r5]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08098EE4 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrh r2, [r5, 0x2]
+ strh r2, [r1, 0x24]
+ ldr r2, _08098EE8 @ =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r2
+ strh r0, [r1, 0x8]
+ ldrh r0, [r5, 0x2]
+ strh r0, [r1, 0xA]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r1, 0xC]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r1, 0xE]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r1, 0x10]
+ ldr r2, _08098EEC @ =sub_8098EF0
+ str r2, [r1]
+ adds r0, r4, 0
+ bl _call_via_r2
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08098EE0: .4byte gBattleAnimArgs
+_08098EE4: .4byte gSprites
+_08098EE8: .4byte gTasks
+_08098EEC: .4byte sub_8098EF0
+ thumb_func_end sub_8098E90
+
+ thumb_func_start sub_8098EF0
+sub_8098EF0: @ 8098EF0
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r2, _08098F7C @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r3, r0, r2
+ ldrb r5, [r3, 0x8]
+ ldrh r4, [r3, 0xA]
+ ldrh r1, [r3, 0x18]
+ adds r0, r1, 0x1
+ strh r0, [r3, 0x18]
+ movs r7, 0xC
+ ldrsh r0, [r3, r7]
+ lsls r1, 16
+ asrs r1, 16
+ mov r12, r2
+ ldr r7, _08098F80 @ =gSprites
+ cmp r0, r1
+ bne _08098F42
+ movs r0, 0
+ strh r0, [r3, 0x18]
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r1, r0, r7
+ ldrh r3, [r1, 0x24]
+ movs r0, 0x24
+ ldrsh r2, [r1, r0]
+ lsls r0, r4, 16
+ asrs r0, 16
+ cmp r2, r0
+ bne _08098F3A
+ negs r0, r2
+ lsls r0, 16
+ lsrs r4, r0, 16
+_08098F3A:
+ lsls r0, r4, 16
+ asrs r0, 16
+ adds r0, r3
+ strh r0, [r1, 0x24]
+_08098F42:
+ lsls r2, r6, 2
+ adds r2, r6
+ lsls r2, 3
+ add r2, r12
+ strh r4, [r2, 0xA]
+ ldrh r1, [r2, 0xE]
+ ldrh r0, [r2, 0x1A]
+ adds r1, r0
+ strh r1, [r2, 0x1A]
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r7
+ lsls r1, 16
+ asrs r1, 24
+ strh r1, [r0, 0x26]
+ ldrh r0, [r2, 0x10]
+ subs r0, 0x1
+ strh r0, [r2, 0x10]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08098F74
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_08098F74:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08098F7C: .4byte gTasks
+_08098F80: .4byte gSprites
+ thumb_func_end sub_8098EF0
+
+ thumb_func_start sub_8098F84
+sub_8098F84: @ 8098F84
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r6, 0x1
+ ldr r4, _08098FF8 @ =gBattleAnimArgs
+ ldrb r0, [r4]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ ble _08098FA8
+ movs r0, 0x5
+ strh r0, [r4, 0x8]
+_08098FA8:
+ movs r1, 0
+ movs r2, 0x8
+ ldrsh r0, [r4, r2]
+ adds r3, r4, 0
+ ldr r2, _08098FFC @ =gTasks
+ mov r12, r2
+ lsls r4, r5, 2
+ ldr r2, _08099000 @ =sub_8099004
+ mov r8, r2
+ cmp r1, r0
+ bge _08098FCE
+ adds r2, r0, 0
+_08098FC0:
+ lsls r0, r6, 25
+ lsrs r6, r0, 24
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, r2
+ blt _08098FC0
+_08098FCE:
+ adds r0, r4, r5
+ lsls r0, 3
+ add r0, r12
+ strh r7, [r0, 0x8]
+ ldrh r1, [r3, 0x2]
+ strh r1, [r0, 0xA]
+ ldrh r1, [r3, 0x4]
+ strh r1, [r0, 0xC]
+ ldrh r1, [r3, 0x6]
+ strh r1, [r0, 0xE]
+ strh r6, [r0, 0x10]
+ mov r1, r8
+ str r1, [r0]
+ adds r0, r5, 0
+ bl _call_via_r8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08098FF8: .4byte gBattleAnimArgs
+_08098FFC: .4byte gTasks
+_08099000: .4byte sub_8099004
+ thumb_func_end sub_8098F84
+
+ thumb_func_start sub_8099004
+sub_8099004: @ 8099004
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ ldr r1, _08099074 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ ldrb r4, [r5, 0x8]
+ movs r1, 0x12
+ ldrsh r0, [r5, r1]
+ movs r2, 0xA
+ ldrsh r1, [r5, r2]
+ bl Sin
+ ldr r2, _08099078 @ =gSprites
+ lsls r1, r4, 4
+ adds r1, r4
+ lsls r1, 2
+ adds r4, r1, r2
+ strh r0, [r4, 0x24]
+ movs r1, 0x12
+ ldrsh r0, [r5, r1]
+ movs r2, 0xC
+ ldrsh r1, [r5, r2]
+ bl Cos
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ ldrh r1, [r5, 0xC]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r5, 0x10]
+ ldrh r1, [r5, 0x12]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r5, 0x12]
+ cmp r0, 0
+ bne _0809905C
+ ldrh r0, [r5, 0xE]
+ subs r0, 0x1
+ strh r0, [r5, 0xE]
+_0809905C:
+ movs r2, 0xE
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ bne _0809906E
+ strh r0, [r4, 0x24]
+ strh r0, [r4, 0x26]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_0809906E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099074: .4byte gTasks
+_08099078: .4byte gSprites
+ thumb_func_end sub_8099004
+
+ thumb_func_start sub_809907C
+sub_809907C: @ 809907C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080990A4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08099098
+ ldr r1, _080990A8 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+_08099098:
+ adds r0, r4, 0
+ bl sub_8098F84
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080990A4: .4byte gBattleAnimAttacker
+_080990A8: .4byte gBattleAnimArgs
+ thumb_func_end sub_809907C
+
+ thumb_func_start sub_80990AC
+sub_80990AC: @ 80990AC
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080990D4 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080990DC
+ ldr r1, _080990D8 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ b _080990E0
+ .align 2, 0
+_080990D4: .4byte gBattleAnimAttacker
+_080990D8: .4byte gBattleAnimArgs
+_080990DC:
+ ldr r1, _0809910C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+_080990E0:
+ strh r0, [r4, 0x30]
+ ldrh r2, [r1]
+ movs r0, 0
+ strh r2, [r4, 0x2E]
+ strh r0, [r4, 0x32]
+ ldr r1, _08099110 @ =gBattlerSpriteIds
+ ldr r0, _08099114 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r4, 0x34]
+ strh r2, [r4, 0x36]
+ ldr r1, _08099118 @ =sub_8099120
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _0809911C @ =sub_8074DC4
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809910C: .4byte gBattleAnimArgs
+_08099110: .4byte gBattlerSpriteIds
+_08099114: .4byte gBattleAnimAttacker
+_08099118: .4byte sub_8099120
+_0809911C: .4byte sub_8074DC4
+ thumb_func_end sub_80990AC
+
+ thumb_func_start sub_8099120
+sub_8099120: @ 8099120
+ push {lr}
+ ldrh r1, [r0, 0x36]
+ strh r1, [r0, 0x2E]
+ ldrh r1, [r0, 0x30]
+ negs r1, r1
+ strh r1, [r0, 0x30]
+ ldr r1, _0809913C @ =sub_8074DC4
+ str r1, [r0, 0x1C]
+ ldr r1, _08099140 @ =DestroyAnimSprite
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809913C: .4byte sub_8074DC4
+_08099140: .4byte DestroyAnimSprite
+ thumb_func_end sub_8099120
+
+ thumb_func_start sub_8099144
+sub_8099144: @ 8099144
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r5, _08099184 @ =gBattleAnimArgs
+ ldrb r0, [r5, 0x4]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r2, [r5]
+ movs r1, 0
+ strh r2, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ ldrh r1, [r5, 0x2]
+ strh r1, [r4, 0x32]
+ strh r0, [r4, 0x34]
+ strh r2, [r4, 0x36]
+ ldr r1, _08099188 @ =sub_8099190
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _0809918C @ =sub_8074DC4
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099184: .4byte gBattleAnimArgs
+_08099188: .4byte sub_8099190
+_0809918C: .4byte sub_8074DC4
+ thumb_func_end sub_8099144
+
+ thumb_func_start sub_8099190
+sub_8099190: @ 8099190
+ push {lr}
+ ldrh r1, [r0, 0x36]
+ strh r1, [r0, 0x2E]
+ ldrh r1, [r0, 0x32]
+ negs r1, r1
+ strh r1, [r0, 0x32]
+ ldr r1, _080991AC @ =sub_8074DC4
+ str r1, [r0, 0x1C]
+ ldr r1, _080991B0 @ =DestroyAnimSprite
+ bl StoreSpriteCallbackInData6
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080991AC: .4byte sub_8074DC4
+_080991B0: .4byte DestroyAnimSprite
+ thumb_func_end sub_8099190
+
+ thumb_func_start sub_80991B4
+sub_80991B4: @ 80991B4
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ ldr r0, _080991CC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080991D8
+ ldr r1, _080991D0 @ =gBattlerSpriteIds
+ ldr r0, _080991D4 @ =gBattleAnimAttacker
+ b _080991DC
+ .align 2, 0
+_080991CC: .4byte gBattleAnimArgs
+_080991D0: .4byte gBattlerSpriteIds
+_080991D4: .4byte gBattleAnimAttacker
+_080991D8:
+ ldr r1, _0809923C @ =gBattlerSpriteIds
+ ldr r0, _08099240 @ =gBattleAnimTarget
+_080991DC:
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r7, [r0]
+ ldr r5, _08099244 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x4]
+ movs r3, 0
+ strh r0, [r6, 0x2E]
+ ldr r0, _08099248 @ =gSprites
+ lsls r4, r7, 4
+ adds r4, r7
+ lsls r4, 2
+ adds r4, r0
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r6, 0x30]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r6, 0x32]
+ ldrh r0, [r4, 0x26]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r6, 0x34]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r6, 0x36]
+ adds r0, r6, 0
+ str r3, [sp]
+ bl sub_80754B8
+ ldr r3, [sp]
+ strh r3, [r6, 0x34]
+ strh r3, [r6, 0x36]
+ ldrh r0, [r4, 0x24]
+ strh r0, [r6, 0x38]
+ ldrh r0, [r4, 0x26]
+ strh r0, [r6, 0x3A]
+ adds r2, r6, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _0809924C
+ strh r3, [r6, 0x32]
+ b _08099252
+ .align 2, 0
+_0809923C: .4byte gBattlerSpriteIds
+_08099240: .4byte gBattleAnimTarget
+_08099244: .4byte gBattleAnimArgs
+_08099248: .4byte gSprites
+_0809924C:
+ cmp r0, 0x2
+ bne _08099252
+ strh r3, [r6, 0x30]
+_08099252:
+ ldr r0, _08099268 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0x2]
+ lsls r0, r7, 8
+ orrs r0, r1
+ strh r0, [r6, 0x3C]
+ ldr r0, _0809926C @ =sub_8099270
+ str r0, [r6, 0x1C]
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099268: .4byte gBattleAnimArgs
+_0809926C: .4byte sub_8099270
+ thumb_func_end sub_80991B4
+
+ thumb_func_start sub_8099270
+sub_8099270: @ 8099270
+ push {r4-r6,lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x3C]
+ lsls r1, r0, 24
+ lsrs r4, r1, 24
+ adds r5, r4, 0
+ lsls r0, 16
+ asrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _080992AC @ =gSprites
+ adds r3, r1, r0
+ ldrh r0, [r2, 0x2E]
+ movs r6, 0x2E
+ ldrsh r1, [r2, r6]
+ cmp r1, 0
+ bne _080992B0
+ cmp r4, 0x1
+ bhi _0809929A
+ strh r1, [r3, 0x24]
+_0809929A:
+ cmp r5, 0x2
+ beq _080992A2
+ cmp r5, 0
+ bne _080992A4
+_080992A2:
+ strh r1, [r3, 0x26]
+_080992A4:
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+ b _080992DA
+ .align 2, 0
+_080992AC: .4byte gSprites
+_080992B0:
+ subs r0, 0x1
+ strh r0, [r2, 0x2E]
+ ldrh r1, [r2, 0x30]
+ ldrh r0, [r2, 0x34]
+ adds r1, r0
+ strh r1, [r2, 0x34]
+ ldrh r0, [r2, 0x32]
+ ldrh r4, [r2, 0x36]
+ adds r0, r4
+ strh r0, [r2, 0x36]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r6, [r2, 0x38]
+ adds r1, r6
+ strh r1, [r3, 0x24]
+ ldrh r0, [r2, 0x36]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r2, [r2, 0x3A]
+ adds r0, r2
+ strh r0, [r3, 0x26]
+_080992DA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8099270
+
+ thumb_func_start sub_80992E0
+sub_80992E0: @ 80992E0
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r0, _080992F4 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080992FC
+ ldr r0, _080992F8 @ =gBattleAnimAttacker
+ b _080992FE
+ .align 2, 0
+_080992F4: .4byte gBattleAnimArgs
+_080992F8: .4byte gBattleAnimAttacker
+_080992FC:
+ ldr r0, _0809937C @ =gBattleAnimTarget
+_080992FE:
+ ldrb r2, [r0]
+ ldr r0, _08099380 @ =gBattlerSpriteIds
+ adds r0, r2, r0
+ ldrb r6, [r0]
+ adds r0, r2, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08099328
+ ldr r1, _08099384 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+ movs r2, 0x6
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x1
+ bne _08099328
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_08099328:
+ ldr r2, _08099384 @ =gBattleAnimArgs
+ ldrh r0, [r2, 0x8]
+ movs r4, 0
+ strh r0, [r5, 0x2E]
+ ldr r0, _08099388 @ =gSprites
+ lsls r1, r6, 4
+ adds r1, r6
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x20]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r2, 0x2]
+ ldrh r3, [r1, 0x20]
+ adds r0, r3
+ strh r0, [r5, 0x32]
+ ldrh r0, [r1, 0x22]
+ strh r0, [r5, 0x34]
+ ldrh r0, [r2, 0x4]
+ ldrh r1, [r1, 0x22]
+ adds r0, r1
+ strh r0, [r5, 0x36]
+ adds r0, r5, 0
+ bl sub_80754B8
+ strh r4, [r5, 0x34]
+ strh r4, [r5, 0x36]
+ strh r6, [r5, 0x38]
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r1, _0809938C @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _08099390 @ =sub_8074E14
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809937C: .4byte gBattleAnimTarget
+_08099380: .4byte gBattlerSpriteIds
+_08099384: .4byte gBattleAnimArgs
+_08099388: .4byte gSprites
+_0809938C: .4byte DestroyAnimSprite
+_08099390: .4byte sub_8074E14
+ thumb_func_end sub_80992E0
+
+ thumb_func_start sub_8099394
+sub_8099394: @ 8099394
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r2, r6, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080993B4 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080993BC
+ ldr r0, _080993B8 @ =gBattleAnimAttacker
+ b _080993BE
+ .align 2, 0
+_080993B4: .4byte gBattleAnimArgs
+_080993B8: .4byte gBattleAnimAttacker
+_080993BC:
+ ldr r0, _0809943C @ =gBattleAnimTarget
+_080993BE:
+ ldrb r1, [r0]
+ ldr r0, _08099440 @ =gBattlerSpriteIds
+ adds r0, r1, r0
+ ldrb r7, [r0]
+ adds r0, r1, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080993E8
+ ldr r1, _08099444 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+ movs r2, 0x6
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x1
+ bne _080993E8
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080993E8:
+ ldr r5, _08099444 @ =gBattleAnimArgs
+ ldrh r0, [r5, 0x8]
+ strh r0, [r6, 0x2E]
+ ldr r0, _08099448 @ =gSprites
+ lsls r4, r7, 4
+ adds r4, r7
+ lsls r4, 2
+ adds r4, r0
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r6, 0x30]
+ ldrh r1, [r5, 0x2]
+ adds r0, r1
+ strh r0, [r6, 0x32]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r6, 0x34]
+ ldrh r1, [r5, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x36]
+ adds r0, r6, 0
+ bl sub_80754B8
+ ldrh r0, [r4, 0x24]
+ lsls r0, 8
+ strh r0, [r6, 0x34]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 8
+ strh r0, [r6, 0x36]
+ strh r7, [r6, 0x38]
+ ldrh r0, [r5, 0xA]
+ strh r0, [r6, 0x3A]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08099450
+ ldr r1, _0809944C @ =DestroyAnimSprite
+ adds r0, r6, 0
+ bl StoreSpriteCallbackInData6
+ b _08099458
+ .align 2, 0
+_0809943C: .4byte gBattleAnimTarget
+_08099440: .4byte gBattlerSpriteIds
+_08099444: .4byte gBattleAnimArgs
+_08099448: .4byte gSprites
+_0809944C: .4byte DestroyAnimSprite
+_08099450:
+ ldr r1, _08099464 @ =sub_809946C
+ adds r0, r6, 0
+ bl StoreSpriteCallbackInData6
+_08099458:
+ ldr r0, _08099468 @ =sub_8074E14
+ str r0, [r6, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099464: .4byte sub_809946C
+_08099468: .4byte sub_8074E14
+ thumb_func_end sub_8099394
+
+ thumb_func_start sub_809946C
+sub_809946C: @ 809946C
+ push {r4,lr}
+ ldr r4, _08099498 @ =gSprites
+ movs r1, 0x38
+ ldrsh r2, [r0, r1]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ movs r3, 0
+ strh r3, [r1, 0x24]
+ movs r1, 0x38
+ ldrsh r2, [r0, r1]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r4
+ strh r3, [r1, 0x26]
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099498: .4byte gSprites
+ thumb_func_end sub_809946C
+
+ thumb_func_start sub_809949C
+sub_809949C: @ 809949C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r5, _08099520 @ =gBattleAnimArgs
+ movs r0, 0x6
+ ldrsh r1, [r5, r0]
+ movs r0, 0x80
+ lsls r0, 8
+ bl __divsi3
+ lsls r0, 16
+ lsrs r7, r0, 16
+ ldr r0, _08099524 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080994CE
+ ldrh r0, [r5, 0x2]
+ negs r0, r0
+ strh r0, [r5, 0x2]
+ ldrh r0, [r5, 0xA]
+ negs r0, r0
+ strh r0, [r5, 0xA]
+_080994CE:
+ ldrb r0, [r5]
+ bl GetAnimBankSpriteId
+ ldr r1, _08099528 @ =gTasks
+ lsls r4, r6, 2
+ adds r4, r6
+ lsls r4, 3
+ adds r4, r1
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x8]
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ lsls r0, 8
+ movs r2, 0x6
+ ldrsh r1, [r5, r2]
+ bl __divsi3
+ strh r0, [r4, 0xA]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0xC]
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0xE]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x10]
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ lsls r0, 8
+ movs r2, 0xC
+ ldrsh r1, [r5, r2]
+ bl __divsi3
+ strh r0, [r4, 0x12]
+ ldrh r0, [r5, 0xC]
+ strh r0, [r4, 0x14]
+ strh r7, [r4, 0x16]
+ ldr r0, _0809952C @ =sub_8099530
+ str r0, [r4]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099520: .4byte gBattleAnimArgs
+_08099524: .4byte gBattleAnimAttacker
+_08099528: .4byte gTasks
+_0809952C: .4byte sub_8099530
+ thumb_func_end sub_809949C
+
+ thumb_func_start sub_8099530
+sub_8099530: @ 8099530
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08099588 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r5, r1, r2
+ ldrb r1, [r5, 0x8]
+ ldrh r0, [r5, 0xA]
+ ldrh r2, [r5, 0x1E]
+ adds r0, r2
+ strh r0, [r5, 0x1E]
+ ldr r2, _0809958C @ =gSprites
+ lsls r4, r1, 4
+ adds r4, r1
+ lsls r4, 2
+ adds r4, r2
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ ldrh r0, [r5, 0x1C]
+ lsrs r0, 8
+ movs r2, 0xC
+ ldrsh r1, [r5, r2]
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldrh r0, [r5, 0x16]
+ ldrh r1, [r5, 0x1C]
+ adds r0, r1
+ strh r0, [r5, 0x1C]
+ ldrh r0, [r5, 0xE]
+ subs r0, 0x1
+ strh r0, [r5, 0xE]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08099580
+ ldr r0, _08099590 @ =sub_8099594
+ str r0, [r5]
+_08099580:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099588: .4byte gTasks
+_0809958C: .4byte gSprites
+_08099590: .4byte sub_8099594
+ thumb_func_end sub_8099530
+
+ thumb_func_start sub_8099594
+sub_8099594: @ 8099594
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080995B8 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r1, [r4, 0x10]
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ ble _080995BC
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x10]
+ b _080995F0
+ .align 2, 0
+_080995B8: .4byte gTasks
+_080995BC:
+ ldrb r0, [r4, 0x8]
+ ldrh r2, [r4, 0x12]
+ ldrh r1, [r4, 0x20]
+ adds r2, r1
+ strh r2, [r4, 0x20]
+ ldr r3, _080995F8 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ lsls r2, 16
+ asrs r2, 24
+ ldrh r0, [r4, 0x1E]
+ lsls r0, 16
+ asrs r0, 24
+ adds r2, r0
+ strh r2, [r1, 0x24]
+ ldrh r0, [r4, 0x14]
+ subs r0, 0x1
+ strh r0, [r4, 0x14]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080995F0
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080995F0:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080995F8: .4byte gSprites
+ thumb_func_end sub_8099594
+
+ thumb_func_start sub_80995FC
+sub_80995FC: @ 80995FC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _08099620 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r0, [r1, r2]
+ cmp r0, 0x2
+ beq _0809962A
+ cmp r0, 0x2
+ bgt _08099624
+ cmp r0, 0
+ blt _0809965C
+ ldrb r0, [r1]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r2, r0, 24
+ b _08099664
+ .align 2, 0
+_08099620: .4byte gBattleAnimArgs
+_08099624:
+ cmp r0, 0x3
+ beq _08099634
+ b _0809965C
+_0809962A:
+ ldr r5, _08099630 @ =gBattleAnimAttacker
+ b _08099636
+ .align 2, 0
+_08099630: .4byte gBattleAnimAttacker
+_08099634:
+ ldr r5, _08099654 @ =gBattleAnimTarget
+_08099636:
+ ldrb r0, [r5]
+ movs r4, 0x2
+ eors r0, r4
+ bl sub_8072DF0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0809965C
+ ldr r1, _08099658 @ =gBattlerSpriteIds
+ ldrb r0, [r5]
+ eors r0, r4
+ adds r0, r1
+ ldrb r2, [r0]
+ b _08099664
+ .align 2, 0
+_08099654: .4byte gBattleAnimTarget
+_08099658: .4byte gBattlerSpriteIds
+_0809965C:
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+ b _080996A4
+_08099664:
+ ldr r1, _08099684 @ =gTasks
+ lsls r4, r6, 2
+ adds r0, r4, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ strh r2, [r5, 0x8]
+ ldr r0, _08099688 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08099690
+ ldr r0, _0809968C @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x2]
+ b _08099696
+ .align 2, 0
+_08099684: .4byte gTasks
+_08099688: .4byte gBattleAnimTarget
+_0809968C: .4byte gBattleAnimArgs
+_08099690:
+ ldr r0, _080996AC @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x2]
+ negs r0, r0
+_08099696:
+ strh r0, [r5, 0xA]
+ ldr r0, _080996B0 @ =gTasks
+ adds r1, r4, r6
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080996B4 @ =sub_80996B8
+ str r0, [r1]
+_080996A4:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080996AC: .4byte gBattleAnimArgs
+_080996B0: .4byte gTasks
+_080996B4: .4byte sub_80996B8
+ thumb_func_end sub_80995FC
+
+ thumb_func_start sub_80996B8
+sub_80996B8: @ 80996B8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080996FC @ =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldrb r2, [r1, 0x8]
+ ldr r3, _08099700 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r1, 0xA]
+ ldrh r2, [r0, 0x24]
+ adds r1, r2
+ strh r1, [r0, 0x24]
+ movs r2, 0x24
+ ldrsh r1, [r0, r2]
+ movs r2, 0x20
+ ldrsh r0, [r0, r2]
+ adds r1, r0
+ adds r1, 0x20
+ movs r0, 0x98
+ lsls r0, 1
+ cmp r1, r0
+ bls _080996F6
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080996F6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080996FC: .4byte gTasks
+_08099700: .4byte gSprites
+ thumb_func_end sub_80996B8
+
+ thumb_func_start sub_8099704
+sub_8099704: @ 8099704
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r6, _08099754 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08099720
+ ldr r1, _08099758 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+_08099720:
+ ldr r4, _08099758 @ =gBattleAnimArgs
+ ldrb r0, [r4, 0x8]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0809975C @ =gTasks
+ lsls r3, r5, 2
+ adds r1, r3, r5
+ lsls r1, 3
+ adds r2, r1, r2
+ ldrh r1, [r4]
+ strh r1, [r2, 0x8]
+ ldrh r1, [r4, 0x2]
+ strh r1, [r2, 0xA]
+ ldrh r1, [r4, 0x4]
+ strh r1, [r2, 0xC]
+ ldrh r1, [r4, 0x6]
+ strh r1, [r2, 0xE]
+ strh r0, [r2, 0x10]
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _08099760
+ ldrb r0, [r6]
+ b _08099764
+ .align 2, 0
+_08099754: .4byte gBattleAnimAttacker
+_08099758: .4byte gBattleAnimArgs
+_0809975C: .4byte gTasks
+_08099760:
+ ldr r0, _0809977C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+_08099764:
+ strh r0, [r2, 0x12]
+ ldr r1, _08099780 @ =gTasks
+ adds r0, r3, r5
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x1
+ strh r1, [r0, 0x20]
+ ldr r1, _08099784 @ =sub_8099788
+ str r1, [r0]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0809977C: .4byte gBattleAnimTarget
+_08099780: .4byte gTasks
+_08099784: .4byte sub_8099788
+ thumb_func_end sub_8099704
+
+ thumb_func_start sub_8099788
+sub_8099788: @ 8099788
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080997D8 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrb r7, [r4, 0x10]
+ ldrh r0, [r4, 0xC]
+ ldrh r1, [r4, 0x1C]
+ adds r0, r1
+ lsls r1, r0, 16
+ strh r0, [r4, 0x1C]
+ lsrs r1, 24
+ mov r8, r1
+ mov r0, r8
+ movs r2, 0xA
+ ldrsh r1, [r4, r2]
+ bl Sin
+ lsls r0, 16
+ lsrs r5, r0, 16
+ mov r9, r5
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080997E0
+ ldr r0, _080997DC @ =gSprites
+ lsls r2, r7, 4
+ adds r1, r2, r7
+ lsls r1, 2
+ adds r1, r0
+ strh r5, [r1, 0x24]
+ mov r9, r0
+ adds r4, r2, 0
+ b _08099826
+ .align 2, 0
+_080997D8: .4byte gTasks
+_080997DC: .4byte gSprites
+_080997E0:
+ ldrb r0, [r4, 0x12]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08099808
+ ldr r1, _08099804 @ =gSprites
+ lsls r2, r7, 4
+ adds r0, r2, r7
+ lsls r0, 2
+ adds r3, r0, r1
+ lsls r0, r5, 16
+ asrs r0, 16
+ mov r9, r1
+ adds r4, r2, 0
+ cmp r0, 0
+ bge _08099824
+ b _08099822
+ .align 2, 0
+_08099804: .4byte gSprites
+_08099808:
+ ldr r1, _080998A8 @ =gSprites
+ lsls r2, r7, 4
+ adds r0, r2, r7
+ lsls r0, 2
+ adds r3, r0, r1
+ mov r4, r9
+ lsls r0, r4, 16
+ asrs r0, 16
+ mov r9, r1
+ adds r4, r2, 0
+ cmp r0, 0
+ bge _08099822
+ negs r0, r0
+_08099822:
+ negs r0, r0
+_08099824:
+ strh r0, [r3, 0x26]
+_08099826:
+ mov r5, r8
+ cmp r5, 0x7F
+ bls _08099848
+ ldr r1, _080998AC @ =gTasks
+ lsls r2, r6, 2
+ adds r0, r2, r6
+ lsls r0, 3
+ adds r3, r0, r1
+ movs r5, 0x1E
+ ldrsh r0, [r3, r5]
+ adds r5, r1, 0
+ cmp r0, 0
+ bne _08099848
+ movs r1, 0x20
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x1
+ beq _0809986A
+_08099848:
+ mov r2, r8
+ cmp r2, 0x7E
+ bhi _0809989C
+ ldr r1, _080998AC @ =gTasks
+ lsls r2, r6, 2
+ adds r0, r2, r6
+ lsls r0, 3
+ adds r3, r0, r1
+ movs r5, 0x1E
+ ldrsh r0, [r3, r5]
+ adds r5, r1, 0
+ cmp r0, 0x1
+ bne _0809989C
+ movs r1, 0x20
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bne _0809989C
+_0809986A:
+ adds r1, r2, r6
+ lsls r1, 3
+ adds r1, r5
+ ldrh r0, [r1, 0x1E]
+ movs r2, 0x1
+ eors r0, r2
+ strh r0, [r1, 0x1E]
+ ldrh r0, [r1, 0x20]
+ eors r0, r2
+ strh r0, [r1, 0x20]
+ ldrh r0, [r1, 0xE]
+ subs r0, 0x1
+ strh r0, [r1, 0xE]
+ lsls r0, 16
+ asrs r3, r0, 16
+ cmp r3, 0
+ bne _0809989C
+ adds r0, r4, r7
+ lsls r0, 2
+ add r0, r9
+ strh r3, [r0, 0x24]
+ strh r3, [r0, 0x26]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_0809989C:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080998A8: .4byte gSprites
+_080998AC: .4byte gTasks
+ thumb_func_end sub_8099788
+
+ thumb_func_start sub_80998B0
+sub_80998B0: @ 80998B0
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r6, _080998FC @ =gBattleAnimArgs
+ ldrb r0, [r6, 0x6]
+ bl GetAnimBankSpriteId
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldrb r1, [r6, 0x8]
+ adds r0, r5, 0
+ bl sub_80758E0
+ ldr r1, _08099900 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldrh r1, [r6]
+ strh r1, [r0, 0x8]
+ ldrh r1, [r6, 0x2]
+ strh r1, [r0, 0xA]
+ ldrh r1, [r6, 0x4]
+ strh r1, [r0, 0xC]
+ ldrh r1, [r6, 0x4]
+ strh r1, [r0, 0xE]
+ strh r5, [r0, 0x10]
+ movs r1, 0x80
+ lsls r1, 1
+ strh r1, [r0, 0x1C]
+ strh r1, [r0, 0x1E]
+ ldr r1, _08099904 @ =sub_8099908
+ str r1, [r0]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080998FC: .4byte gBattleAnimArgs
+_08099900: .4byte gTasks
+_08099904: .4byte sub_8099908
+ thumb_func_end sub_80998B0
+
+ thumb_func_start sub_8099908
+sub_8099908: @ 8099908
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _08099968 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x8]
+ ldrh r1, [r4, 0x1C]
+ adds r0, r1
+ strh r0, [r4, 0x1C]
+ ldrh r0, [r4, 0xA]
+ ldrh r3, [r4, 0x1E]
+ adds r0, r3
+ strh r0, [r4, 0x1E]
+ ldrb r0, [r4, 0x10]
+ adds r6, r0, 0
+ movs r0, 0x1C
+ ldrsh r1, [r4, r0]
+ movs r3, 0x1E
+ ldrsh r2, [r4, r3]
+ adds r0, r6, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0xC]
+ subs r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r1, r0, 16
+ cmp r1, 0
+ bne _08099978
+ ldrh r2, [r4, 0xE]
+ movs r3, 0xE
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ ble _0809996C
+ ldrh r0, [r4, 0x8]
+ negs r0, r0
+ strh r0, [r4, 0x8]
+ ldrh r0, [r4, 0xA]
+ negs r0, r0
+ strh r0, [r4, 0xA]
+ strh r2, [r4, 0xC]
+ strh r1, [r4, 0xE]
+ b _08099978
+ .align 2, 0
+_08099968: .4byte gTasks
+_0809996C:
+ adds r0, r6, 0
+ bl sub_8075980
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_08099978:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8099908
+
+ thumb_func_start sub_8099980
+sub_8099980: @ 8099980
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r4, _080999BC @ =gBattleAnimArgs
+ ldrb r0, [r4, 0x4]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r1, 0
+ bl sub_80758E0
+ ldr r1, _080999C0 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r2, r0, r1
+ movs r1, 0
+ strh r1, [r2, 0xA]
+ ldrh r0, [r4]
+ strh r0, [r2, 0xC]
+ movs r3, 0x6
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x1
+ beq _080999C4
+ strh r1, [r2, 0xE]
+ b _080999D0
+ .align 2, 0
+_080999BC: .4byte gBattleAnimArgs
+_080999C0: .4byte gTasks
+_080999C4:
+ ldrh r0, [r4]
+ ldrh r1, [r4, 0x2]
+ adds r3, r0, 0
+ muls r3, r1
+ adds r0, r3, 0
+ strh r0, [r2, 0xE]
+_080999D0:
+ ldr r1, _080999FC @ =gTasks
+ lsls r4, r7, 2
+ adds r0, r4, r7
+ lsls r0, 3
+ adds r5, r0, r1
+ ldr r6, _08099A00 @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x2]
+ strh r0, [r5, 0x10]
+ mov r0, r8
+ strh r0, [r5, 0x12]
+ ldrh r0, [r6, 0x6]
+ strh r0, [r5, 0x14]
+ bl sub_8073788
+ lsls r0, 24
+ mov r8, r4
+ cmp r0, 0
+ beq _08099A04
+ movs r0, 0x1
+ strh r0, [r5, 0x16]
+ b _08099A28
+ .align 2, 0
+_080999FC: .4byte gTasks
+_08099A00: .4byte gBattleAnimArgs
+_08099A04:
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _08099A14
+ ldr r0, _08099A10 @ =gBattleAnimAttacker
+ b _08099A16
+ .align 2, 0
+_08099A10: .4byte gBattleAnimAttacker
+_08099A14:
+ ldr r0, _08099A6C @ =gBattleAnimTarget
+_08099A16:
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ movs r1, 0
+ lsls r0, 24
+ cmp r0, 0
+ bne _08099A26
+ movs r1, 0x1
+_08099A26:
+ strh r1, [r5, 0x16]
+_08099A28:
+ ldr r0, _08099A70 @ =gTasks
+ mov r2, r8
+ adds r1, r2, r7
+ lsls r1, 3
+ adds r4, r1, r0
+ movs r3, 0x16
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _08099A54
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _08099A54
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4, 0xE]
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ negs r0, r0
+ strh r0, [r4, 0x10]
+_08099A54:
+ ldr r0, _08099A70 @ =gTasks
+ mov r3, r8
+ adds r1, r3, r7
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _08099A74 @ =sub_8099B54
+ str r0, [r1]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099A6C: .4byte gBattleAnimTarget
+_08099A70: .4byte gTasks
+_08099A74: .4byte sub_8099B54
+ thumb_func_end sub_8099980
+
+ thumb_func_start sub_8099A78
+sub_8099A78: @ 8099A78
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r4, _08099AB4 @ =gBattleAnimArgs
+ ldrb r0, [r4, 0x4]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r1, 0
+ bl sub_80758E0
+ ldr r1, _08099AB8 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0
+ strh r1, [r0, 0xA]
+ ldrh r1, [r4]
+ strh r1, [r0, 0xC]
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _08099AC0
+ ldr r0, _08099ABC @ =gBattleAnimAttacker
+ b _08099AC2
+ .align 2, 0
+_08099AB4: .4byte gBattleAnimArgs
+_08099AB8: .4byte gTasks
+_08099ABC: .4byte gBattleAnimAttacker
+_08099AC0:
+ ldr r0, _08099AF0 @ =gBattleAnimTarget
+_08099AC2:
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08099AD4
+ ldrh r0, [r4, 0x2]
+ negs r0, r0
+ strh r0, [r4, 0x2]
+_08099AD4:
+ ldr r0, _08099AF4 @ =gBattleAnimArgs
+ movs r2, 0x6
+ ldrsh r1, [r0, r2]
+ adds r6, r0, 0
+ cmp r1, 0x1
+ beq _08099AFC
+ ldr r2, _08099AF8 @ =gTasks
+ lsls r3, r5, 2
+ adds r0, r3, r5
+ lsls r0, 3
+ adds r0, r2
+ movs r1, 0
+ strh r1, [r0, 0xE]
+ b _08099B16
+ .align 2, 0
+_08099AF0: .4byte gBattleAnimTarget
+_08099AF4: .4byte gBattleAnimArgs
+_08099AF8: .4byte gTasks
+_08099AFC:
+ ldr r3, _08099B4C @ =gTasks
+ lsls r4, r5, 2
+ adds r0, r4, r5
+ lsls r0, 3
+ adds r0, r3
+ ldrh r2, [r6]
+ ldrh r1, [r6, 0x2]
+ adds r7, r2, 0
+ muls r7, r1
+ adds r1, r7, 0
+ strh r1, [r0, 0xE]
+ adds r2, r3, 0
+ adds r3, r4, 0
+_08099B16:
+ adds r1, r3, r5
+ lsls r1, 3
+ adds r1, r2
+ ldrh r0, [r6, 0x2]
+ strh r0, [r1, 0x10]
+ mov r0, r8
+ strh r0, [r1, 0x12]
+ ldrh r0, [r6, 0x6]
+ strh r0, [r1, 0x14]
+ movs r0, 0x1
+ strh r0, [r1, 0x16]
+ movs r2, 0xE
+ ldrsh r0, [r1, r2]
+ negs r0, r0
+ strh r0, [r1, 0xE]
+ movs r7, 0x10
+ ldrsh r0, [r1, r7]
+ negs r0, r0
+ strh r0, [r1, 0x10]
+ ldr r0, _08099B50 @ =sub_8099B54
+ str r0, [r1]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099B4C: .4byte gTasks
+_08099B50: .4byte sub_8099B54
+ thumb_func_end sub_8099A78
+
+ thumb_func_start sub_8099B54
+sub_8099B54: @ 8099B54
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _08099BAC @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x10]
+ ldrh r1, [r4, 0xE]
+ adds r0, r1
+ strh r0, [r4, 0xE]
+ ldrb r0, [r4, 0x12]
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0xE]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ movs r2, 0x16
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _08099B88
+ ldrb r0, [r4, 0x12]
+ bl sub_80759DC
+_08099B88:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0xC
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _08099BCE
+ movs r1, 0x14
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _08099BB0
+ cmp r0, 0x1
+ ble _08099BB6
+ cmp r0, 0x2
+ beq _08099BBE
+ b _08099BB6
+ .align 2, 0
+_08099BAC: .4byte gTasks
+_08099BB0:
+ ldrb r0, [r4, 0x12]
+ bl sub_8075980
+_08099BB6:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ b _08099BCE
+_08099BBE:
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ negs r0, r0
+ strh r0, [r4, 0x10]
+ movs r0, 0x1
+ strh r0, [r4, 0x14]
+_08099BCE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8099B54
+
+ thumb_func_start sub_8099BD4
+sub_8099BD4: @ 8099BD4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r0, _08099C00 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ mov r8, r0
+ cmp r1, 0
+ bne _08099C0C
+ ldr r4, _08099C04 @ =gTasks
+ lsls r5, r7, 2
+ adds r0, r5, r7
+ lsls r0, 3
+ adds r6, r0, r4
+ ldr r0, _08099C08 @ =gUnknown_2037EEC
+ ldrh r0, [r0]
+ movs r1, 0xC
+ bl __udivsi3
+ b _08099C20
+ .align 2, 0
+_08099C00: .4byte gBattleAnimArgs
+_08099C04: .4byte gTasks
+_08099C08: .4byte gUnknown_2037EEC
+_08099C0C:
+ ldr r4, _08099CA8 @ =gTasks
+ lsls r5, r7, 2
+ adds r0, r5, r7
+ lsls r0, 3
+ adds r6, r0, r4
+ ldr r0, _08099CAC @ =gUnknown_2037EE8
+ ldr r0, [r0]
+ movs r1, 0xC
+ bl __divsi3
+_08099C20:
+ strh r0, [r6, 0x26]
+ lsls r0, 16
+ adds r1, r4, 0
+ cmp r0, 0
+ bgt _08099C2E
+ movs r0, 0x1
+ strh r0, [r6, 0x26]
+_08099C2E:
+ movs r2, 0x26
+ ldrsh r0, [r6, r2]
+ cmp r0, 0x10
+ ble _08099C3A
+ movs r0, 0x10
+ strh r0, [r6, 0x26]
+_08099C3A:
+ adds r4, r5, r7
+ lsls r4, 3
+ adds r4, r1
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsrs r0, r1, 31
+ adds r1, r0
+ asrs r1, 1
+ movs r5, 0
+ strh r1, [r4, 0x24]
+ ldrh r2, [r4, 0x26]
+ movs r0, 0x1
+ ands r0, r2
+ adds r1, r0
+ strh r1, [r4, 0x22]
+ strh r5, [r4, 0x20]
+ mov r1, r8
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x1C]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x1E]
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x16]
+ ldr r2, _08099CB0 @ =gSprites
+ movs r0, 0x16
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x24]
+ strh r0, [r4, 0x18]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x26]
+ strh r0, [r4, 0x1A]
+ strh r5, [r4, 0x8]
+ mov r1, r8
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0xA]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0xC]
+ ldr r0, _08099CB4 @ =sub_8099CB8
+ str r0, [r4]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099CA8: .4byte gTasks
+_08099CAC: .4byte gUnknown_2037EE8
+_08099CB0: .4byte gSprites
+_08099CB4: .4byte sub_8099CB8
+ thumb_func_end sub_8099BD4
+
+ thumb_func_start sub_8099CB8
+sub_8099CB8: @ 8099CB8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _08099D0C @ =gTasks
+ adds r3, r0, r1
+ ldrh r0, [r3, 0x8]
+ adds r0, 0x1
+ strh r0, [r3, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0xA
+ ldrsh r1, [r3, r2]
+ cmp r0, r1
+ ble _08099D96
+ movs r0, 0
+ strh r0, [r3, 0x8]
+ ldrh r0, [r3, 0x20]
+ adds r1, r0, 0x1
+ movs r0, 0x1
+ ands r1, r0
+ strh r1, [r3, 0x20]
+ movs r2, 0x1C
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ beq _08099D2A
+ cmp r1, 0
+ beq _08099D14
+ ldr r2, _08099D10 @ =gSprites
+ movs r0, 0x16
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0x22]
+ ldrh r2, [r3, 0x18]
+ adds r1, r2
+ b _08099D28
+ .align 2, 0
+_08099D0C: .4byte gTasks
+_08099D10: .4byte gSprites
+_08099D14:
+ ldr r2, _08099D50 @ =gSprites
+ movs r0, 0x16
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0x18]
+ ldrh r2, [r3, 0x24]
+ subs r1, r2
+_08099D28:
+ strh r1, [r0, 0x24]
+_08099D2A:
+ movs r1, 0x1E
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ beq _08099D64
+ movs r2, 0x20
+ ldrsh r4, [r3, r2]
+ cmp r4, 0
+ beq _08099D54
+ ldr r2, _08099D50 @ =gSprites
+ movs r0, 0x16
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0x26]
+ strh r1, [r0, 0x26]
+ b _08099D64
+ .align 2, 0
+_08099D50: .4byte gSprites
+_08099D54:
+ ldr r2, _08099D9C @ =gSprites
+ movs r0, 0x16
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r4, [r0, 0x26]
+_08099D64:
+ ldrh r0, [r3, 0xC]
+ subs r0, 0x1
+ strh r0, [r3, 0xC]
+ lsls r0, 16
+ asrs r4, r0, 16
+ cmp r4, 0
+ bne _08099D96
+ ldr r2, _08099D9C @ =gSprites
+ movs r0, 0x16
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r4, [r0, 0x24]
+ movs r0, 0x16
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r4, [r0, 0x26]
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_08099D96:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08099D9C: .4byte gSprites
+ thumb_func_end sub_8099CB8
+
+ .align 2, 0 @ Don't pad with nop.