summaryrefslogtreecommitdiff
path: root/asm/electric.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/electric.s')
-rw-r--r--asm/electric.s2547
1 files changed, 2547 insertions, 0 deletions
diff --git a/asm/electric.s b/asm/electric.s
new file mode 100644
index 000000000..3d8864186
--- /dev/null
+++ b/asm/electric.s
@@ -0,0 +1,2547 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_810A1A8
+sub_810A1A8: @ 810A1A8
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810A1D0
+ ldr r0, =gBattleAnimArgs
+ ldrh r1, [r4, 0x20]
+ ldrh r2, [r0]
+ subs r1, r2
+ strh r1, [r4, 0x20]
+ b _0810A1DC
+ .pool
+_0810A1D0:
+ ldr r1, =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ adds r0, r1, 0
+_0810A1DC:
+ ldrh r0, [r0, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, =sub_810A1F8
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810A1A8
+
+ thumb_func_start sub_810A1F8
+sub_810A1F8: @ 810A1F8
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0810A20E
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_0810A20E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810A1F8
+
+ thumb_func_start sub_810A214
+sub_810A214: @ 810A214
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810A23C
+ ldr r0, =gBattleAnimArgs
+ ldrh r1, [r4, 0x20]
+ ldrh r0, [r0]
+ subs r1, r0
+ strh r1, [r4, 0x20]
+ b _0810A246
+ .pool
+_0810A23C:
+ ldr r0, =gBattleAnimArgs
+ ldrh r0, [r0]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+_0810A246:
+ ldr r0, =sub_810A258
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810A214
+
+ thumb_func_start sub_810A258
+sub_810A258: @ 810A258
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0810A26E
+ adds r0, r2, 0
+ bl move_anim_8074EE0
+_0810A26E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810A258
+
+ thumb_func_start sub_810A274
+sub_810A274: @ 810A274
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810A2C4
+ ldr r2, =gBattleAnimArgs
+ ldrh r0, [r5, 0x20]
+ ldrh r1, [r2]
+ subs r0, r1
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x22]
+ ldrh r1, [r2, 0x2]
+ subs r0, r1
+ strh r0, [r5, 0x22]
+ b _0810A2D8
+ .pool
+_0810A2C4:
+ ldr r0, =gBattleAnimArgs
+ ldrh r1, [r0]
+ ldrh r2, [r5, 0x20]
+ adds r1, r2
+ strh r1, [r5, 0x20]
+ ldrh r1, [r0, 0x2]
+ ldrh r2, [r5, 0x22]
+ adds r1, r2
+ strh r1, [r5, 0x22]
+ adds r2, r0, 0
+_0810A2D8:
+ movs r0, 0
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r2, 0x4]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r2, 0x6]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r5, 0x34]
+ ldr r1, =move_anim_8074EE0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, =sub_80A62EC
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810A274
+
+ thumb_func_start sub_810A308
+sub_810A308: @ 810A308
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ ldr r0, =gBattleAnimArgs
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x1
+ beq _0810A380
+ cmp r0, 0x1
+ bgt _0810A324
+ cmp r0, 0
+ beq _0810A32E
+ b _0810A380
+ .pool
+_0810A324:
+ cmp r0, 0x2
+ beq _0810A338
+ cmp r0, 0x3
+ beq _0810A35C
+ b _0810A380
+_0810A32E:
+ ldr r0, =gBattleAnimAttacker
+ b _0810A382
+ .pool
+_0810A338:
+ ldr r4, =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r6, 0x2
+ eors r0, r6
+ bl IsBattlerSpriteVisible
+ lsls r0, 24
+ cmp r0, 0
+ bne _0810A354
+ ldrb r4, [r4]
+ b _0810A384
+ .pool
+_0810A354:
+ ldrb r0, [r4]
+ adds r4, r6, 0
+ eors r4, r0
+ b _0810A384
+_0810A35C:
+ ldr r0, =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r4, 0x2
+ eors r0, r4
+ bl IsBattlerSpriteVisible
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810A380
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ eors r4, r0
+ b _0810A384
+ .pool
+_0810A380:
+ ldr r0, =gBattleAnimTarget
+_0810A382:
+ ldrb r4, [r0]
+_0810A384:
+ ldr r0, =gBattleAnimArgs
+ movs r2, 0xA
+ ldrsh r0, [r0, r2]
+ cmp r0, 0
+ bne _0810A3AC
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ adds r0, r4, 0
+ movs r1, 0x1
+ b _0810A3BE
+ .pool
+_0810A3AC:
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ adds r0, r4, 0
+ movs r1, 0x3
+_0810A3BE:
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r7, =gSineTable
+ ldr r6, =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ lsls r0, 1
+ adds r0, r7
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r2, 0x2
+ ldrsh r0, [r6, r2]
+ muls r0, r1
+ asrs r0, 8
+ strh r0, [r5, 0x24]
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ adds r0, 0x40
+ lsls r0, 1
+ adds r0, r7
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r2, 0x2
+ ldrsh r0, [r6, r2]
+ muls r0, r1
+ asrs r0, 8
+ strh r0, [r5, 0x26]
+ ldrh r1, [r6, 0xC]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0810A422
+ adds r0, r4, 0
+ bl sub_80A8328
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x1
+ movs r1, 0x3
+ ands r0, r1
+ lsls r0, 2
+ ldrb r2, [r5, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r5, 0x5]
+_0810A422:
+ ldrb r2, [r5, 0x3]
+ lsls r2, 26
+ lsrs r2, 27
+ movs r0, 0x4
+ ldrsh r1, [r6, r0]
+ lsls r0, r1, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ ldr r3, =gOamMatrices
+ lsls r2, 3
+ adds r2, r3
+ adds r1, 0x40
+ lsls r1, 1
+ adds r1, r7
+ ldrh r1, [r1]
+ strh r1, [r2, 0x6]
+ strh r1, [r2]
+ strh r0, [r2, 0x2]
+ lsls r0, 16
+ asrs r0, 16
+ negs r0, r0
+ strh r0, [r2, 0x4]
+ ldrh r0, [r6, 0x6]
+ strh r0, [r5, 0x2E]
+ ldr r0, =sub_810E2C8
+ str r0, [r5, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810A308
+
+ thumb_func_start sub_810A46C
+sub_810A46C: @ 810A46C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_80A69CC
+ ldr r5, =gBattleAnimArgs
+ ldrh r0, [r5, 0x6]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ ldr r6, =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x36]
+ adds r0, r4, 0
+ bl InitAnimLinearTranslation
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0x38]
+ ldrh r0, [r5, 0xA]
+ strh r0, [r4, 0x3A]
+ ldrh r0, [r5, 0x8]
+ strh r0, [r4, 0x3C]
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ movs r3, 0xC
+ ldrsh r0, [r5, r3]
+ lsls r0, 2
+ adds r1, r0
+ ldr r3, =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ ldr r1, =sub_810A4F4
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810A46C
+
+ thumb_func_start sub_810A4F4
+sub_810A4F4: @ 810A4F4
+ push {r4,lr}
+ adds r4, r0, 0
+ bl TranslateAnimLinear
+ lsls r0, 24
+ cmp r0, 0
+ bne _0810A55E
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Sin
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Cos
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3A]
+ ldrh r2, [r4, 0x3C]
+ adds r0, r2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r1, 0x3
+ bl __modsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _0810A564
+ 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]
+ b _0810A564
+_0810A55E:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_0810A564:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810A4F4
+
+ thumb_func_start sub_810A56C
+sub_810A56C: @ 810A56C
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x38]
+ subs r0, 0x1
+ strh r0, [r3, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _0810A5A4
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ 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
+ mov r1, r12
+ strb r0, [r1]
+ ldrh r0, [r3, 0x36]
+ strh r0, [r3, 0x38]
+_0810A5A4:
+ ldrh r0, [r3, 0x34]
+ subs r1, r0, 0x1
+ strh r1, [r3, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _0810A5B6
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_0810A5B6:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810A56C
+
+ thumb_func_start sub_810A5BC
+sub_810A5BC: @ 810A5BC
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _0810A5D8
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0810A5E0
+_0810A5D8:
+ ldr r1, =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ negs r0, r0
+ strh r0, [r1, 0x2]
+_0810A5E0:
+ ldr r5, =gBattleAnimTarget
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ ldr r4, =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r6, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x4]
+ adds r0, r1
+ strh r0, [r6, 0x22]
+ ldrh r0, [r4]
+ strh r0, [r6, 0x34]
+ ldrh r0, [r4, 0x6]
+ strh r0, [r6, 0x36]
+ strh r0, [r6, 0x38]
+ ldr r0, =sub_810A56C
+ str r0, [r6, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810A5BC
+
+ thumb_func_start sub_810A628
+sub_810A628: @ 810A628
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r1, =gBattleAnimArgs
+ ldrh r0, [r1, 0x6]
+ strh r0, [r5, 0x2E]
+ movs r2, 0xE
+ ldrsh r0, [r1, r2]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _0810A64C
+ ldr r0, =gBattleAnimTarget
+ b _0810A64E
+ .pool
+_0810A64C:
+ ldr r0, =gBattleAnimAttacker
+_0810A64E:
+ ldrb r6, [r0]
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _0810A666
+ adds r0, r6, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0810A66E
+_0810A666:
+ ldr r1, =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+_0810A66E:
+ adds r0, r6, 0
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ ldr r4, =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r3, [r4]
+ adds r0, r3
+ strh r0, [r5, 0x20]
+ adds r0, r6, 0
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ ldrh r1, [r4, 0xE]
+ ldr r0, =0x00007fff
+ ands r0, r1
+ strh r0, [r5, 0x36]
+ ldrh r0, [r4, 0x4]
+ strh r0, [r5, 0x38]
+ ldrh r0, [r4, 0xA]
+ strh r0, [r5, 0x3A]
+ ldrh r0, [r4, 0x8]
+ strh r0, [r5, 0x3C]
+ ldrh r2, [r5, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ lsls r0, 2
+ adds r1, r0
+ ldr r3, =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ ldr r1, =sub_810A6EC
+ str r1, [r5, 0x1C]
+ adds r0, r5, 0
+ bl _call_via_r1
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810A628
+
+ thumb_func_start sub_810A6EC
+sub_810A6EC: @ 810A6EC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x24]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x3A]
+ ldrh r1, [r4, 0x3C]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x3C]
+ movs r2, 0x3C
+ ldrsh r0, [r4, r2]
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl __modsi3
+ cmp r0, 0
+ bne _0810A742
+ 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]
+_0810A742:
+ ldrh r0, [r4, 0x2E]
+ subs r1, r0, 0x1
+ strh r1, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _0810A754
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_0810A754:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810A6EC
+
+ thumb_func_start sub_810A75C
+sub_810A75C: @ 810A75C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0
+ bl sub_80A6980
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ ldr r3, =gBattleAnimArgs
+ movs r5, 0x6
+ ldrsh r0, [r3, r5]
+ lsls r0, 2
+ adds r1, r0
+ ldr r5, =0x000003ff
+ adds r0, r5, 0
+ ands r1, r0
+ ldr r0, =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ movs r1, 0x6
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x1
+ bne _0810A7A4
+ ldrb r0, [r4, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x10
+ b _0810A7B2
+ .pool
+_0810A7A4:
+ cmp r0, 0x2
+ bne _0810A7B6
+ ldrb r0, [r4, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x20
+_0810A7B2:
+ orrs r1, r0
+ strb r1, [r4, 0x3]
+_0810A7B6:
+ ldr r0, =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x2E]
+ ldr r0, =sub_80A64B0
+ str r0, [r4, 0x1C]
+ ldr r1, =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810A75C
+
+ thumb_func_start sub_810A7DC
+sub_810A7DC: @ 810A7DC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r6, =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0
+ bl GetBattlerSpriteCoord
+ ldr r1, =gTasks
+ lsls r4, r5, 2
+ adds r4, r5
+ lsls r4, 3
+ adds r4, r1
+ lsls r0, 24
+ ldr r5, =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r5]
+ adds r0, r1
+ strh r0, [r4, 0x8]
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r5, 0x2]
+ adds r0, r1
+ strh r0, [r4, 0xA]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0xC]
+ ldr r0, =sub_810A834
+ str r0, [r4]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810A7DC
+
+ thumb_func_start sub_810A834
+sub_810A834: @ 810A834
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ movs r5, 0
+ movs r7, 0
+ ldr r1, =gTasks
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ ldrb r2, [r0, 0xC]
+ str r2, [sp]
+ ldrh r4, [r0, 0x8]
+ ldrh r6, [r0, 0xA]
+ movs r3, 0xC
+ ldrsh r0, [r0, r3]
+ mov r10, r1
+ cmp r0, 0
+ bne _0810A878
+ movs r0, 0
+ mov r8, r0
+ movs r2, 0x1
+ movs r1, 0x10
+ mov r12, r1
+ b _0810A882
+ .pool
+_0810A878:
+ movs r2, 0x10
+ mov r12, r2
+ movs r3, 0x8
+ mov r8, r3
+ movs r2, 0x4
+_0810A882:
+ mov r0, r9
+ lsls r1, r0, 2
+ adds r0, r1, r0
+ lsls r0, 3
+ add r0, r10
+ movs r3, 0x1C
+ ldrsh r0, [r0, r3]
+ mov r10, r1
+ cmp r0, 0xA
+ bhi _0810A978
+ lsls r0, 2
+ ldr r1, =_0810A8A4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0810A8A4:
+ .4byte _0810A8D0
+ .4byte _0810A978
+ .4byte _0810A8E4
+ .4byte _0810A978
+ .4byte _0810A904
+ .4byte _0810A978
+ .4byte _0810A91A
+ .4byte _0810A978
+ .4byte _0810A93C
+ .4byte _0810A978
+ .4byte _0810A970
+_0810A8D0:
+ ldr r0, =gUnknown_08595828
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ mov r4, r12
+ lsls r3, r4, 16
+ b _0810A952
+ .pool
+_0810A8E4:
+ mov r0, r12
+ lsls r3, r0, 17
+ mov r1, r8
+ adds r0, r1, r2
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ ldr r0, =gUnknown_08595828
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ b _0810A952
+ .pool
+_0810A904:
+ mov r3, r12
+ lsls r0, r3, 16
+ asrs r0, 16
+ lsls r3, r0, 1
+ adds r3, r0
+ lsls r0, r2, 1
+ add r0, r8
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ b _0810A946
+_0810A91A:
+ mov r0, r12
+ lsls r3, r0, 18
+ lsls r0, r2, 1
+ adds r0, r2
+ add r0, r8
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ ldr r0, =gUnknown_08595828
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ b _0810A952
+ .pool
+_0810A93C:
+ mov r1, r12
+ lsls r0, r1, 16
+ asrs r0, 16
+ lsls r3, r0, 2
+ adds r3, r0
+_0810A946:
+ ldr r0, =gUnknown_08595828
+ lsls r1, r4, 16
+ asrs r1, 16
+ lsls r2, r6, 16
+ asrs r2, 16
+ lsls r3, 16
+_0810A952:
+ asrs r3, 16
+ adds r2, r3
+ lsls r2, 16
+ asrs r2, 16
+ movs r3, 0x2
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ b _0810A978
+ .pool
+_0810A970:
+ mov r0, r9
+ bl DestroyAnimVisualTask
+ b _0810A9BC
+_0810A978:
+ cmp r7, 0
+ beq _0810A9AC
+ ldr r4, =gSprites
+ lsls r3, r5, 4
+ adds r3, r5
+ lsls r3, 2
+ adds r0, r3, r4
+ ldrh r5, [r0, 0x4]
+ lsls r2, r5, 22
+ lsrs r2, 22
+ add r2, r8
+ ldr r6, =0x000003ff
+ adds r1, r6, 0
+ ands r2, r1
+ ldr r1, =0xfffffc00
+ ands r1, r5
+ orrs r1, r2
+ strh r1, [r0, 0x4]
+ mov r1, sp
+ ldrh r1, [r1]
+ strh r1, [r0, 0x2E]
+ adds r4, 0x1C
+ adds r3, r4
+ ldr r1, [r3]
+ bl _call_via_r1
+_0810A9AC:
+ ldr r0, =gTasks
+ mov r1, r10
+ add r1, r9
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x1C]
+ adds r0, 0x1
+ strh r0, [r1, 0x1C]
+_0810A9BC:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810A834
+
+ thumb_func_start sub_810A9DC
+sub_810A9DC: @ 810A9DC
+ push {lr}
+ adds r3, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bne _0810A9FE
+ ldrb r1, [r3, 0x1]
+ movs r2, 0x3F
+ adds r0, r2, 0
+ ands r0, r1
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r3, 0x1]
+ ldrb r0, [r3, 0x3]
+ ands r2, r0
+ strb r2, [r3, 0x3]
+ b _0810AA12
+_0810A9FE:
+ ldrb r2, [r3, 0x1]
+ movs r1, 0x3F
+ adds r0, r1, 0
+ ands r0, r2
+ strb r0, [r3, 0x1]
+ ldrb r0, [r3, 0x3]
+ ands r1, r0
+ movs r0, 0x40
+ orrs r1, r0
+ strb r1, [r3, 0x3]
+_0810AA12:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bne _0810AA26
+ adds r0, r3, 0
+ bl DestroySprite
+_0810AA26:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810A9DC
+
+ thumb_func_start sub_810AA2C
+sub_810AA2C: @ 810AA2C
+ push {r4-r7,lr}
+ adds r4, r0, 0
+ ldr r0, =gBattleAnimArgs
+ ldrh r1, [r0]
+ ldrh r2, [r4, 0x20]
+ adds r1, r2
+ strh r1, [r4, 0x20]
+ ldrh r0, [r0, 0x2]
+ ldrh r3, [r4, 0x22]
+ adds r0, r3
+ strh r0, [r4, 0x22]
+ ldr r0, =gUnknown_08595840
+ adds r1, 0x20
+ lsls r1, 16
+ asrs r1, 16
+ movs r7, 0x22
+ ldrsh r2, [r4, r7]
+ adds r3, r4, 0
+ adds r3, 0x43
+ ldrb r3, [r3]
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, =gSprites
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r6, r2, r3
+ ldrh r5, [r6, 0x4]
+ lsls r1, r5, 22
+ lsrs r1, 22
+ adds r1, 0x8
+ ldr r7, =0x000003ff
+ adds r0, r7, 0
+ ands r1, r0
+ ldr r0, =0xfffffc00
+ ands r0, r5
+ orrs r0, r1
+ strh r0, [r6, 0x4]
+ ldr r1, =gAnimVisualTaskCount
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+ adds r3, 0x1C
+ adds r2, r3
+ ldr r0, =sub_810AAB0
+ str r0, [r2]
+ str r0, [r4, 0x1C]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810AA2C
+
+ thumb_func_start sub_810AAB0
+sub_810AAB0: @ 810AAB0
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _0810AAE4
+ movs r0, 0
+ strh r0, [r3, 0x2E]
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r2, [r0]
+ 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
+ mov r1, r12
+ strb r0, [r1]
+_0810AAE4:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x33
+ bne _0810AAF8
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_0810AAF8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810AAB0
+
+ thumb_func_start sub_810AAFC
+sub_810AAFC: @ 810AAFC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, =gTasks
+ adds r5, r1, r0
+ ldr r0, =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _0810AB28
+ ldr r4, =gBattleAnimAttacker
+ b _0810AB2A
+ .pool
+_0810AB28:
+ ldr r4, =gBattleAnimTarget
+_0810AB2A:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x24]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x26]
+ ldr r2, =gBattleAnimArgs
+ ldrh r0, [r2, 0x2]
+ movs r1, 0
+ strh r0, [r5, 0x14]
+ strh r1, [r5, 0x16]
+ strh r1, [r5, 0x18]
+ strh r1, [r5, 0x1A]
+ strh r1, [r5, 0x1C]
+ ldrh r0, [r2, 0x6]
+ strh r0, [r5, 0x1E]
+ strh r1, [r5, 0x20]
+ ldrh r0, [r2, 0x4]
+ strh r0, [r5, 0x22]
+ ldr r0, =sub_810AB78
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810AAFC
+
+ thumb_func_start sub_810AB78
+sub_810AB78: @ 810AB78
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r2, r6, 0
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, =gTasks
+ adds r5, r0, r1
+ movs r1, 0x14
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _0810AC78
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x1
+ movs r7, 0
+ strh r0, [r5, 0x20]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x22
+ ldrsh r1, [r5, r2]
+ cmp r0, r1
+ ble _0810AC86
+ strh r7, [r5, 0x20]
+ ldr r0, =gUnknown_085958A8
+ movs r3, 0x24
+ ldrsh r1, [r5, r3]
+ movs r3, 0x26
+ ldrsh r2, [r5, r3]
+ movs r3, 0x2
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _0810AC86
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, =gSprites
+ adds r4, r0
+ ldr r1, =gUnknown_08595858
+ movs r2, 0x1A
+ ldrsh r0, [r5, r2]
+ lsls r0, 1
+ adds r0, r1
+ movs r3, 0
+ ldrsb r3, [r0, r3]
+ ldrh r0, [r4, 0x20]
+ adds r3, r0
+ strh r3, [r4, 0x20]
+ movs r2, 0x1A
+ ldrsh r0, [r5, r2]
+ lsls r0, 1
+ adds r1, 0x1
+ adds r0, r1
+ movs r2, 0
+ ldrsb r2, [r0, r2]
+ ldrh r0, [r4, 0x22]
+ adds r2, r0
+ strh r2, [r4, 0x22]
+ movs r1, 0x18
+ ldrsh r0, [r5, r1]
+ lsls r1, r0, 2
+ adds r1, r0
+ movs r0, 0x28
+ subs r0, r1
+ strh r0, [r4, 0x2E]
+ strh r3, [r4, 0x30]
+ ldrh r0, [r5, 0x24]
+ strh r0, [r4, 0x32]
+ strh r2, [r4, 0x34]
+ ldrh r0, [r5, 0x26]
+ strh r0, [r4, 0x36]
+ strh r6, [r4, 0x38]
+ adds r0, r4, 0
+ bl InitAnimLinearTranslation
+ ldr r1, =sub_810ACC0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, =sub_80A67D8
+ str r0, [r4, 0x1C]
+ ldrh r0, [r5, 0x1A]
+ adds r0, 0x1
+ strh r0, [r5, 0x1A]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ ble _0810AC30
+ strh r7, [r5, 0x1A]
+_0810AC30:
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x1E
+ ldrsh r1, [r5, r2]
+ cmp r0, r1
+ blt _0810AC52
+ strh r7, [r5, 0x1C]
+ ldrh r1, [r5, 0x18]
+ movs r3, 0x18
+ ldrsh r0, [r5, r3]
+ cmp r0, 0x5
+ bgt _0810AC52
+ adds r0, r1, 0x1
+ strh r0, [r5, 0x18]
+_0810AC52:
+ ldrh r0, [r5, 0x16]
+ adds r0, 0x1
+ strh r0, [r5, 0x16]
+ ldrh r0, [r5, 0x14]
+ subs r0, 0x1
+ strh r0, [r5, 0x14]
+ b _0810AC86
+ .pool
+_0810AC78:
+ movs r1, 0x16
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0810AC86
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_0810AC86:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810AB78
+
+ thumb_func_start sub_810AC8C
+sub_810AC8C: @ 810AC8C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl TranslateAnimLinear
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810ACB4
+ ldr r2, =gTasks
+ movs r0, 0x38
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ adds r0, r2
+ ldrh r1, [r0, 0x16]
+ subs r1, 0x1
+ strh r1, [r0, 0x16]
+ adds r0, r4, 0
+ bl DestroySprite
+_0810ACB4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810AC8C
+
+ thumb_func_start sub_810ACC0
+sub_810ACC0: @ 810ACC0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ ldr r0, =sub_810AC8C
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810ACC0
+
+ thumb_func_start sub_810ACD8
+sub_810ACD8: @ 810ACD8
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _0810ACF4
+ ldr r4, =gBattleAnimAttacker
+ b _0810ACF6
+ .pool
+_0810ACF4:
+ ldr r4, =gBattleAnimTarget
+_0810ACF6:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r1, =move_anim_8074EE0
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, =sub_80A67BC
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810ACD8
+
+ thumb_func_start sub_810AD30
+sub_810AD30: @ 810AD30
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _0810AD4C
+ ldr r4, =gBattleAnimAttacker
+ b _0810AD4E
+ .pool
+_0810AD4C:
+ ldr r4, =gBattleAnimTarget
+_0810AD4E:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r1, =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x24]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x26]
+ ldr r1, =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, =sub_80A67D8
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810AD30
+
+ thumb_func_start sub_810AD98
+sub_810AD98: @ 810AD98
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ ldr r4, =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ movs r0, 0
+ bl GetAnimBattlerSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x3A]
+ movs r0, 0x10
+ strh r0, [r5, 0x3C]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0810ADE6
+ movs r1, 0x3C
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+ strh r0, [r5, 0x3C]
+_0810ADE6:
+ ldr r0, =sub_810ADF8
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810AD98
+
+ thumb_func_start sub_810ADF8
+sub_810ADF8: @ 810ADF8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _0810AE0A
+ cmp r0, 0x1
+ beq _0810AE20
+ b _0810AE50
+_0810AE0A:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x28
+ ble _0810AE50
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _0810AE50
+_0810AE20:
+ ldrh r2, [r4, 0x3C]
+ ldrh r1, [r4, 0x20]
+ adds r0, r2, r1
+ strh r0, [r4, 0x20]
+ ldr r3, =gSprites
+ movs r0, 0x3A
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r1, [r0, 0x24]
+ adds r2, r1
+ strh r2, [r0, 0x24]
+ ldrh r0, [r4, 0x20]
+ adds r0, 0x50
+ lsls r0, 16
+ movs r1, 0xC8
+ lsls r1, 17
+ cmp r0, r1
+ bls _0810AE50
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_0810AE50:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810ADF8
+
+ thumb_func_start sub_810AE5C
+sub_810AE5C: @ 810AE5C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ ldr r1, =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _0810AEF0
+ cmp r0, 0x1
+ bgt _0810AE84
+ cmp r0, 0
+ beq _0810AE90
+ b _0810AFC0
+ .pool
+_0810AE84:
+ cmp r0, 0x2
+ beq _0810AF4C
+ cmp r0, 0x3
+ bne _0810AE8E
+ b _0810AFA0
+_0810AE8E:
+ b _0810AFC0
+_0810AE90:
+ movs r0, 0
+ bl GetAnimBattlerSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r6, 0
+ strh r0, [r5, 0x26]
+ ldr r4, =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x24]
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0810AECC
+ ldr r0, =0x0000ffe0
+ strh r0, [r5, 0x24]
+ movs r0, 0x2
+ b _0810AED2
+ .pool
+_0810AECC:
+ movs r0, 0x20
+ strh r0, [r5, 0x24]
+ ldr r0, =0x0000fffe
+_0810AED2:
+ strh r0, [r5, 0x22]
+ ldr r2, =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r5, 0x24]
+ strh r1, [r0, 0x24]
+ b _0810AF92
+ .pool
+_0810AEF0:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _0810AFC0
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ ldr r4, =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r5, r1]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r4
+ adds r2, 0x3E
+ ldrb r3, [r2]
+ lsls r0, r3, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ ldrh r1, [r5, 0x24]
+ movs r2, 0x24
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _0810AF92
+ ldrh r2, [r5, 0x22]
+ adds r2, r1, r2
+ strh r2, [r5, 0x24]
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ strh r2, [r0, 0x24]
+ b _0810AFC0
+ .pool
+_0810AF4C:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _0810AFC0
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ ldr r1, =gSprites
+ movs r2, 0x26
+ ldrsh r0, [r5, r2]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r1
+ adds r2, 0x3E
+ ldrb r3, [r2]
+ lsls r0, r3, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2]
+ ldrh r0, [r5, 0xC]
+ adds r0, 0x1
+ strh r0, [r5, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ bne _0810AFC0
+_0810AF92:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _0810AFC0
+ .pool
+_0810AFA0:
+ ldr r2, =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ adds r0, 0x3E
+ ldrb r2, [r0]
+ movs r1, 0x5
+ negs r1, r1
+ ands r1, r2
+ strb r1, [r0]
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+_0810AFC0:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810AE5C
+
+ thumb_func_start sub_810AFCC
+sub_810AFCC: @ 810AFCC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _0810AFE6
+ b _0810B10C
+_0810AFE6:
+ cmp r0, 0x1
+ bgt _0810AFF4
+ cmp r0, 0
+ beq _0810AFFC
+ b _0810B14E
+ .pool
+_0810AFF4:
+ cmp r0, 0x2
+ bne _0810AFFA
+ b _0810B140
+_0810AFFA:
+ b _0810B14E
+_0810AFFC:
+ ldr r4, =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _0810B012
+ movs r1, 0x1
+_0810B012:
+ movs r6, 0
+ strh r1, [r5, 0xA]
+ ldr r0, =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r2, [r0, r1]
+ adds r3, r0, 0
+ cmp r2, 0
+ beq _0810B048
+ cmp r2, 0x4
+ beq _0810B070
+ ldrh r1, [r3]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0810B0A8
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r5, 0xE]
+ ldr r0, =0x0000fff0
+ b _0810B0B0
+ .pool
+_0810B048:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0xE]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x12]
+ movs r2, 0xA
+ ldrsh r0, [r5, r2]
+ lsls r0, 7
+ adds r0, 0x78
+ strh r0, [r5, 0x10]
+ b _0810B0E6
+_0810B070:
+ movs r0, 0xA
+ ldrsh r1, [r5, r0]
+ lsls r1, 7
+ movs r0, 0x78
+ subs r0, r1
+ strh r0, [r5, 0xE]
+ ldr r4, =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x12]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0xA
+ ldrsh r1, [r5, r2]
+ lsls r1, 5
+ subs r0, r1
+ strh r0, [r5, 0x10]
+ b _0810B0E6
+ .pool
+_0810B0A8:
+ ldr r0, =0x0000fff0
+ strh r0, [r5, 0xE]
+ movs r0, 0x80
+ lsls r0, 1
+_0810B0B0:
+ strh r0, [r5, 0x10]
+ movs r1, 0xA
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ bne _0810B0D0
+ movs r2, 0
+ ldrsh r0, [r3, r2]
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 1
+ movs r0, 0x50
+ subs r0, r1
+ strh r0, [r5, 0x12]
+ b _0810B0E6
+ .pool
+_0810B0D0:
+ movs r0, 0
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 1
+ adds r0, 0x28
+ strh r0, [r5, 0x12]
+ ldrh r1, [r5, 0xE]
+ ldrh r0, [r5, 0x10]
+ strh r0, [r5, 0xE]
+ strh r1, [r5, 0x10]
+_0810B0E6:
+ movs r2, 0xE
+ ldrsh r1, [r5, r2]
+ movs r2, 0x10
+ ldrsh r0, [r5, r2]
+ cmp r1, r0
+ bge _0810B0FC
+ movs r1, 0
+ movs r0, 0x1
+ strh r0, [r5, 0xA]
+ strh r1, [r5, 0x14]
+ b _0810B138
+_0810B0FC:
+ ldr r0, =0x0000ffff
+ strh r0, [r5, 0xA]
+ movs r0, 0x3
+ strh r0, [r5, 0x14]
+ b _0810B138
+ .pool
+_0810B10C:
+ ldrh r0, [r5, 0xC]
+ adds r0, 0x1
+ strh r0, [r5, 0xC]
+ lsls r0, 16
+ cmp r0, 0
+ ble _0810B14E
+ movs r0, 0
+ strh r0, [r5, 0xC]
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_810B154
+ lsls r0, 24
+ cmp r0, 0
+ bne _0810B138
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_810B154
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810B14E
+_0810B138:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _0810B14E
+_0810B140:
+ movs r1, 0x16
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0810B14E
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_0810B14E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810AFCC
+
+ thumb_func_start sub_810B154
+sub_810B154: @ 810B154
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r0, =gUnknown_08595A00
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ movs r3, 0x12
+ ldrsh r2, [r4, r3]
+ movs r3, 0x23
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _0810B18A
+ ldr r1, =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ strh r5, [r0, 0x3A]
+ movs r1, 0x7
+ strh r1, [r0, 0x3C]
+ ldrh r0, [r4, 0x16]
+ adds r0, 0x1
+ strh r0, [r4, 0x16]
+_0810B18A:
+ ldrh r1, [r4, 0xA]
+ ldrh r5, [r4, 0x14]
+ adds r0, r1, r5
+ strh r0, [r4, 0x14]
+ lsls r0, 16
+ cmp r0, 0
+ bge _0810B19C
+ movs r0, 0x3
+ strh r0, [r4, 0x14]
+_0810B19C:
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x3
+ ble _0810B1A8
+ movs r0, 0
+ strh r0, [r4, 0x14]
+_0810B1A8:
+ movs r3, 0xA
+ ldrsh r0, [r4, r3]
+ lsls r0, 4
+ ldrh r5, [r4, 0xE]
+ adds r2, r0, r5
+ strh r2, [r4, 0xE]
+ lsls r0, r1, 16
+ asrs r3, r0, 16
+ cmp r3, 0x1
+ bne _0810B1C8
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r5, 0x10
+ ldrsh r1, [r4, r5]
+ cmp r0, r1
+ bge _0810B1DC
+_0810B1C8:
+ movs r0, 0x1
+ negs r0, r0
+ cmp r3, r0
+ bne _0810B1E8
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r2, 0x10
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bgt _0810B1E8
+_0810B1DC:
+ movs r0, 0x1
+ b _0810B1EA
+ .pool
+_0810B1E8:
+ movs r0, 0
+_0810B1EA:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_810B154
+
+ thumb_func_start sub_810B1F0
+sub_810B1F0: @ 810B1F0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _0810B230
+ ldr r3, =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]
+ ldrb r0, [r4, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ adds r0, r4, 0
+ bl DestroySprite
+_0810B230:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810B1F0
+
+ thumb_func_start sub_810B23C
+sub_810B23C: @ 810B23C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _0810B24E
+ cmp r0, 0x1
+ beq _0810B280
+ b _0810B294
+_0810B24E:
+ ldr r4, =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ adds r0, r5, 0
+ movs r1, 0x2
+ bl StartSpriteAffineAnim
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _0810B294
+ .pool
+_0810B280:
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0810B294
+ adds r0, r5, 0
+ bl move_anim_8074EE0
+_0810B294:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810B23C
+
+ thumb_func_start sub_810B29C
+sub_810B29C: @ 810B29C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x4
+ bls _0810B2B6
+ b _0810B428
+_0810B2B6:
+ lsls r0, 2
+ ldr r1, =_0810B2C8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .pool
+ .align 2, 0
+_0810B2C8:
+ .4byte _0810B2DC
+ .4byte _0810B36C
+ .4byte _0810B3A8
+ .4byte _0810B404
+ .4byte _0810B414
+_0810B2DC:
+ ldr r4, =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x14]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x16]
+ movs r0, 0x4
+ strh r0, [r5, 0x18]
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x1C]
+ movs r2, 0x1C
+ ldrsh r0, [r5, r2]
+ movs r2, 0x14
+ ldrsh r1, [r5, r2]
+ subs r0, r1
+ movs r1, 0x5
+ bl __divsi3
+ strh r0, [r5, 0x1A]
+ movs r0, 0x7
+ strh r0, [r5, 0x10]
+ ldr r0, =0x0000ffff
+ strh r0, [r5, 0x12]
+ movs r0, 0xC
+ strh r0, [r5, 0x1E]
+ subs r0, 0x4C
+ bl BattleAnimAdjustPanning
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r5, 0x20]
+ movs r0, 0x3F
+ bl BattleAnimAdjustPanning
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrh r0, [r5, 0x20]
+ strh r0, [r5, 0x24]
+ movs r1, 0x22
+ ldrsh r0, [r5, r1]
+ movs r2, 0x20
+ ldrsh r1, [r5, r2]
+ subs r0, r1
+ movs r1, 0x3
+ bl __divsi3
+ strh r0, [r5, 0x26]
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ b _0810B426
+ .pool
+_0810B36C:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ cmp r0, 0
+ ble _0810B39C
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ adds r0, r5, 0
+ adds r1, r2, 0
+ bl sub_810B430
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810B39C
+ movs r1, 0xC
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x5
+ bne _0810B396
+ movs r0, 0x3
+ b _0810B39A
+_0810B396:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+_0810B39A:
+ strh r0, [r5, 0x8]
+_0810B39C:
+ ldrh r1, [r5, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _0810B428
+ b _0810B41E
+_0810B3A8:
+ ldrh r1, [r5, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _0810B3B6
+ subs r0, r1, 0x1
+ strh r0, [r5, 0x1E]
+_0810B3B6:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ movs r3, 0
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ ble _0810B428
+ strh r3, [r5, 0xA]
+ ldrh r1, [r5, 0xC]
+ movs r2, 0x1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0810B3E2
+ movs r0, 0x4
+ strh r0, [r5, 0x16]
+ movs r0, 0x44
+ strh r0, [r5, 0x18]
+ strh r3, [r5, 0x10]
+ strh r2, [r5, 0x12]
+ b _0810B3F2
+_0810B3E2:
+ movs r0, 0x44
+ strh r0, [r5, 0x16]
+ movs r0, 0x4
+ strh r0, [r5, 0x18]
+ movs r0, 0x7
+ strh r0, [r5, 0x10]
+ ldr r0, =0x0000ffff
+ strh r0, [r5, 0x12]
+_0810B3F2:
+ movs r1, 0x1E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ beq _0810B424
+ movs r0, 0x4
+ b _0810B426
+ .pool
+_0810B404:
+ movs r1, 0xE
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0810B428
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ b _0810B428
+_0810B414:
+ ldrh r1, [r5, 0x1E]
+ movs r2, 0x1E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _0810B424
+_0810B41E:
+ subs r0, r1, 0x1
+ strh r0, [r5, 0x1E]
+ b _0810B428
+_0810B424:
+ movs r0, 0x1
+_0810B426:
+ strh r0, [r5, 0x8]
+_0810B428:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810B29C
+
+ thumb_func_start sub_810B430
+sub_810B430: @ 810B430
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ lsls r1, 24
+ lsrs r5, r1, 24
+ ldr r0, =gUnknown_08595A30
+ movs r2, 0x14
+ ldrsh r1, [r4, r2]
+ movs r3, 0x16
+ ldrsh r2, [r4, r3]
+ movs r3, 0x23
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x40
+ beq _0810B49C
+ ldr r1, =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r3, r0, r1
+ ldrh r2, [r3, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ ldrh r6, [r4, 0x10]
+ adds r1, r6
+ ldr r6, =0x000003ff
+ adds r0, r6, 0
+ ands r1, r0
+ ldr r0, =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+ ldrh r0, [r4, 0x12]
+ ldrh r1, [r4, 0x10]
+ adds r0, r1
+ strh r0, [r4, 0x10]
+ lsls r0, 16
+ cmp r0, 0
+ bge _0810B484
+ movs r0, 0x7
+ strh r0, [r4, 0x10]
+_0810B484:
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x7
+ ble _0810B490
+ movs r0, 0
+ strh r0, [r4, 0x10]
+_0810B490:
+ strh r5, [r3, 0x3A]
+ movs r0, 0x3
+ strh r0, [r3, 0x3C]
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+_0810B49C:
+ movs r3, 0x10
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bne _0810B4BE
+ movs r5, 0x12
+ ldrsh r0, [r4, r5]
+ cmp r0, 0
+ ble _0810B4BE
+ ldrh r1, [r4, 0x26]
+ ldrh r6, [r4, 0x24]
+ adds r1, r6
+ strh r1, [r4, 0x24]
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x76
+ bl PlaySE12WithPanning
+_0810B4BE:
+ movs r0, 0x12
+ ldrsh r3, [r4, r0]
+ ldrh r2, [r4, 0x16]
+ cmp r3, 0
+ bge _0810B4D4
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r5, 0x18
+ ldrsh r1, [r4, r5]
+ cmp r0, r1
+ ble _0810B4E4
+_0810B4D4:
+ cmp r3, 0
+ ble _0810B508
+ lsls r0, r2, 16
+ asrs r0, 16
+ movs r6, 0x18
+ ldrsh r1, [r4, r6]
+ cmp r0, r1
+ blt _0810B508
+_0810B4E4:
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x1A]
+ ldrh r1, [r4, 0x14]
+ adds r0, r1
+ strh r0, [r4, 0x14]
+ movs r0, 0x1
+ b _0810B514
+ .pool
+_0810B508:
+ movs r3, 0x12
+ ldrsh r0, [r4, r3]
+ lsls r0, 3
+ adds r0, r2, r0
+ strh r0, [r4, 0x16]
+ movs r0, 0
+_0810B514:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_810B430
+
+ thumb_func_start sub_810B51C
+sub_810B51C: @ 810B51C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _0810B552
+ ldr r3, =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
+_0810B552:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_810B51C
+
+ thumb_func_start sub_810B55C
+sub_810B55C: @ 810B55C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, =gTasks
+ adds r5, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _0810B5D8
+ cmp r0, 0x1
+ bgt _0810B584
+ cmp r0, 0
+ beq _0810B58A
+ b _0810B60E
+ .pool
+_0810B584:
+ cmp r0, 0x2
+ beq _0810B600
+ b _0810B60E
+_0810B58A:
+ ldr r0, =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x20
+ strh r0, [r5, 0x26]
+ strh r0, [r5, 0x24]
+ cmp r0, 0x10
+ ble _0810B5B4
+ adds r2, r0, 0
+_0810B5A4:
+ adds r1, r2, 0
+ subs r1, 0x20
+ adds r2, r1, 0
+ lsls r0, r1, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ bgt _0810B5A4
+ strh r1, [r5, 0x24]
+_0810B5B4:
+ ldr r4, =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl GetBattlerSpriteCoord
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldrb r0, [r4]
+ bl sub_80A82E4
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x2
+ strh r0, [r5, 0x20]
+ b _0810B5F8
+ .pool
+_0810B5D8:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _0810B60E
+ movs r0, 0
+ strh r0, [r5, 0xA]
+ adds r0, r5, 0
+ adds r1, r2, 0
+ bl sub_810B614
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810B60E
+_0810B5F8:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _0810B60E
+_0810B600:
+ movs r1, 0x1C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0810B60E
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_0810B60E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810B55C
+
+ .align 2, 0