summaryrefslogtreecommitdiff
path: root/asm/battle_anim_effects_3.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_anim_effects_3.s')
-rw-r--r--asm/battle_anim_effects_3.s12857
1 files changed, 12857 insertions, 0 deletions
diff --git a/asm/battle_anim_effects_3.s b/asm/battle_anim_effects_3.s
new file mode 100644
index 000000000..74f6ef9fc
--- /dev/null
+++ b/asm/battle_anim_effects_3.s
@@ -0,0 +1,12857 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80DE2C0
+sub_80DE2C0: @ 80DE2C0
+ push {lr}
+ adds r2, r0, 0
+ ldr r1, _080DE2E4 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r3, [r2, 0x20]
+ adds r0, r3
+ strh r0, [r2, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r3, [r2, 0x22]
+ adds r0, r3
+ strh r0, [r2, 0x22]
+ movs r3, 0x6
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _080DE2E8
+ ldrh r0, [r1, 0x4]
+ b _080DE2EC
+ .align 2, 0
+_080DE2E4: .4byte gBattleAnimArgs
+_080DE2E8:
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+_080DE2EC:
+ strh r0, [r2, 0x2E]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r2, 0x30]
+ ldr r0, _080DE2FC @ =sub_80DE300
+ str r0, [r2, 0x1C]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE2FC: .4byte sub_80DE300
+ thumb_func_end sub_80DE2C0
+
+ thumb_func_start sub_80DE300
+sub_80DE300: @ 80DE300
+ push {lr}
+ adds r3, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ ble _080DE340
+ ldrh r1, [r3, 0x32]
+ lsls r0, r1, 16
+ asrs r0, 24
+ strh r0, [r3, 0x24]
+ ldrh r0, [r3, 0x2E]
+ adds r1, r0
+ strh r1, [r3, 0x32]
+ 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, 0x30]
+ subs r0, 0x1
+ strh r0, [r3, 0x30]
+ b _080DE346
+_080DE340:
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080DE346:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DE300
+
+ thumb_func_start sub_80DE34C
+sub_80DE34C: @ 80DE34C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r6, _080DE398 @ =gBattleAnimTarget
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 8
+ movs r0, 0x80
+ lsls r0, 12
+ adds r4, r0
+ asrs r4, 16
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 8
+ movs r0, 0x80
+ lsls r0, 12
+ adds r1, r0
+ asrs r1, 16
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_804A76C
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE398: .4byte gBattleAnimTarget
+ thumb_func_end sub_80DE34C
+
+ thumb_func_start sub_80DE39C
+sub_80DE39C: @ 80DE39C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x5A
+ strh r0, [r4, 0x2E]
+ ldr r0, _080DE3D8 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ movs r0, 0x7
+ strh r0, [r4, 0x30]
+ ldr r1, _080DE3DC @ =sub_80DE3E0
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r0, [r4, 0x30]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE3D8: .4byte sub_8074C44
+_080DE3DC: .4byte sub_80DE3E0
+ thumb_func_end sub_80DE39C
+
+ thumb_func_start sub_80DE3E0
+sub_80DE3E0: @ 80DE3E0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080DE414
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080DE41C @ =sub_80DE420
+ str r0, [r4, 0x1C]
+_080DE414:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE41C: .4byte sub_80DE420
+ thumb_func_end sub_80DE3E0
+
+ thumb_func_start sub_80DE420
+sub_80DE420: @ 80DE420
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DE420
+
+ thumb_func_start sub_80DE440
+sub_80DE440: @ 80DE440
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldr r4, _080DE4CC @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r7, r0, 0
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8075114
+ ldrh r0, [r5, 0x20]
+ subs r0, r7
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r1, [r5, 0x22]
+ subs r1, r6
+ lsls r1, 16
+ asrs r1, 16
+ bl sub_8075B30
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 23
+ adds r0, r1
+ lsrs r4, r0, 16
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DE49E
+ movs r1, 0x80
+ lsls r1, 7
+ adds r0, r4, r1
+ lsls r0, 16
+ lsrs r4, r0, 16
+_080DE49E:
+ movs r3, 0x80
+ lsls r3, 1
+ str r4, [sp]
+ adds r0, r5, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl sub_8075A1C
+ ldr r0, _080DE4D0 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r5, 0x2E]
+ strh r7, [r5, 0x32]
+ strh r6, [r5, 0x36]
+ ldr r0, _080DE4D4 @ =sub_8075590
+ str r0, [r5, 0x1C]
+ ldr r1, _080DE4D8 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE4CC: .4byte gBattleAnimTarget
+_080DE4D0: .4byte gBattleAnimArgs
+_080DE4D4: .4byte sub_8075590
+_080DE4D8: .4byte DestroyAnimSprite
+ thumb_func_end sub_80DE440
+
+ thumb_func_start sub_80DE4DC
+sub_80DE4DC: @ 80DE4DC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x4
+ strh r0, [r4, 0x2E]
+ ldr r0, _080DE504 @ =sub_80DE508
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE504: .4byte sub_80DE508
+ thumb_func_end sub_80DE4DC
+
+ thumb_func_start sub_80DE508
+sub_80DE508: @ 80DE508
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080DE52E
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ b _080DE532
+_080DE52E:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+_080DE532:
+ strh r0, [r4, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xF
+ beq _080DE540
+ cmp r0, 0x4
+ bne _080DE548
+_080DE540:
+ ldrh r0, [r4, 0x30]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r4, 0x30]
+_080DE548:
+ ldrh r0, [r4, 0x32]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x46
+ ble _080DE58C
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ subs r2, 0x12
+ ldrb r0, [r2]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080DE594 @ =sub_80DE598
+ str r0, [r4, 0x1C]
+_080DE58C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE594: .4byte sub_80DE598
+ thumb_func_end sub_80DE508
+
+ thumb_func_start sub_80DE598
+sub_80DE598: @ 80DE598
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x32]
+ adds r1, r0, 0x1
+ strh r1, [r3, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ ble _080DE5D4
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ subs r2, 0x12
+ ldrb r1, [r2]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r3, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080DE5D4
+ ldr r0, _080DE5D8 @ =sub_80DE5DC
+ str r0, [r3, 0x1C]
+_080DE5D4:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE5D8: .4byte sub_80DE5DC
+ thumb_func_end sub_80DE598
+
+ thumb_func_start sub_80DE5DC
+sub_80DE5DC: @ 80DE5DC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x6
+ bhi _080DE634
+ lsls r0, 2
+ ldr r1, _080DE5F4 @ =_080DE5F8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080DE5F4: .4byte _080DE5F8
+ .align 2, 0
+_080DE5F8:
+ .4byte _080DE614
+ .4byte _080DE614
+ .4byte _080DE61E
+ .4byte _080DE61E
+ .4byte _080DE62C
+ .4byte _080DE62C
+ .4byte _080DE634
+_080DE614:
+ movs r1, 0
+ movs r0, 0x1
+ strh r0, [r4, 0x24]
+ strh r1, [r4, 0x26]
+ b _080DE63C
+_080DE61E:
+ ldr r0, _080DE628 @ =0x0000ffff
+ strh r0, [r4, 0x24]
+ movs r0, 0
+ b _080DE63A
+ .align 2, 0
+_080DE628: .4byte 0x0000ffff
+_080DE62C:
+ movs r0, 0
+ strh r0, [r4, 0x24]
+ movs r0, 0x1
+ b _080DE63A
+_080DE634:
+ movs r0, 0
+ strh r0, [r4, 0x24]
+ ldr r0, _080DE680 @ =0x0000ffff
+_080DE63A:
+ strh r0, [r4, 0x26]
+_080DE63C:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ movs r2, 0
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ ble _080DE64E
+ strh r2, [r4, 0x34]
+_080DE64E:
+ ldrh r0, [r4, 0x36]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ ble _080DE678
+ movs r0, 0x10
+ strh r0, [r4, 0x2E]
+ strh r2, [r4, 0x30]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0x52
+ bl SetGpuReg
+ ldr r0, _080DE684 @ =sub_80DE688
+ str r0, [r4, 0x1C]
+_080DE678:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE680: .4byte 0x0000ffff
+_080DE684: .4byte sub_80DE688
+ thumb_func_end sub_80DE5DC
+
+ thumb_func_start sub_80DE688
+sub_80DE688: @ 80DE688
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldrh r0, [r4, 0x30]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080DE6B8
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+_080DE6B8:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DE6CC
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080DE6CC:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bge _080DE6EA
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080DE6EA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DE688
+
+ thumb_func_start sub_80DE6F0
+sub_80DE6F0: @ 80DE6F0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080DE70C @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r0, _080DE710 @ =sub_80DE718
+ str r0, [r1]
+ ldr r1, _080DE714 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_080DE70C: .4byte gTasks
+_080DE710: .4byte sub_80DE718
+_080DE714: .4byte gUnknown_2037EE2
+ thumb_func_end sub_80DE6F0
+
+ thumb_func_start sub_80DE718
+sub_80DE718: @ 80DE718
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8075454
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r7, _080DE7A4 @ =gTasks
+ lsls r5, r4, 2
+ adds r1, r5, r4
+ lsls r1, 3
+ adds r1, r7
+ ldrh r0, [r1, 0x12]
+ adds r0, 0x1
+ strh r0, [r1, 0x12]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080DE788
+ ldr r0, _080DE7A8 @ =gPlttBufferFaded
+ lsls r2, r6, 4
+ adds r1, r2, 0
+ adds r1, 0xB
+ lsls r1, 1
+ adds r1, r0
+ ldrh r3, [r1]
+ mov r8, r3
+ movs r3, 0xA
+ mov r9, r7
+ adds r7, r5, 0
+ mov r12, r0
+ adds r5, r2, 0
+ lsls r0, r6, 5
+ add r0, r12
+ adds r2, r0, 0
+ adds r2, 0x14
+_080DE766:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ subs r2, 0x2
+ subs r1, 0x2
+ subs r3, 0x1
+ cmp r3, 0
+ bgt _080DE766
+ adds r0, r5, 0x1
+ lsls r0, 1
+ add r0, r12
+ movs r1, 0
+ mov r2, r8
+ strh r2, [r0]
+ adds r0, r7, r4
+ lsls r0, 3
+ add r0, r9
+ strh r1, [r0, 0x12]
+_080DE788:
+ ldr r0, _080DE7AC @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080DE7B0 @ =0x0000ffff
+ cmp r1, r0
+ bne _080DE798
+ adds r0, r4, 0
+ bl DestroyTask
+_080DE798:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE7A4: .4byte gTasks
+_080DE7A8: .4byte gPlttBufferFaded
+_080DE7AC: .4byte gBattleAnimArgs
+_080DE7B0: .4byte 0x0000ffff
+ thumb_func_end sub_80DE718
+
+ thumb_func_start sub_80DE7B4
+sub_80DE7B4: @ 80DE7B4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080DE7D0 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r0, _080DE7D4 @ =sub_80DE7DC
+ str r0, [r1]
+ ldr r1, _080DE7D8 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_080DE7D0: .4byte gTasks
+_080DE7D4: .4byte sub_80DE7DC
+_080DE7D8: .4byte gUnknown_2037EE2
+ thumb_func_end sub_80DE7B4
+
+ thumb_func_start sub_80DE7DC
+sub_80DE7DC: @ 80DE7DC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ bl sub_8075454
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r5, _080DE89C @ =gTasks
+ mov r0, r8
+ lsls r3, r0, 2
+ adds r1, r3, r0
+ lsls r1, 3
+ adds r1, r5
+ ldrh r0, [r1, 0x12]
+ adds r0, 0x1
+ strh r0, [r1, 0x12]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080DE87E
+ ldr r0, _080DE8A0 @ =gPlttBufferFaded
+ lsls r2, r7, 4
+ adds r1, r2, 0
+ adds r1, 0xB
+ lsls r1, 1
+ adds r1, r0
+ ldrh r6, [r1]
+ movs r4, 0xA
+ mov r10, r3
+ mov r9, r0
+ adds r5, r2, 0
+ ldr r2, _080DE8A4 @ =gPlttBufferUnfaded
+ mov r12, r2
+ lsls r0, r7, 5
+ add r0, r9
+ adds r3, r0, 0
+ adds r3, 0x14
+_080DE830:
+ ldrh r0, [r3]
+ strh r0, [r1]
+ subs r3, 0x2
+ subs r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bgt _080DE830
+ adds r0, r5, 0x1
+ lsls r0, 1
+ add r0, r9
+ strh r6, [r0]
+ adds r1, r5, 0
+ adds r1, 0xB
+ lsls r1, 1
+ add r1, r12
+ ldrh r6, [r1]
+ movs r4, 0xA
+ lsls r0, r7, 5
+ add r0, r12
+ adds r2, r0, 0
+ adds r2, 0x14
+_080DE85A:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ subs r2, 0x2
+ subs r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bgt _080DE85A
+ adds r0, r5, 0x1
+ lsls r0, 1
+ add r0, r12
+ movs r1, 0
+ strh r6, [r0]
+ mov r0, r10
+ add r0, r8
+ lsls r0, 3
+ ldr r2, _080DE89C @ =gTasks
+ adds r0, r2
+ strh r1, [r0, 0x12]
+_080DE87E:
+ ldr r0, _080DE8A8 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _080DE8AC @ =0x0000ffff
+ cmp r1, r0
+ bne _080DE88E
+ mov r0, r8
+ bl DestroyTask
+_080DE88E:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE89C: .4byte gTasks
+_080DE8A0: .4byte gPlttBufferFaded
+_080DE8A4: .4byte gPlttBufferUnfaded
+_080DE8A8: .4byte gBattleAnimArgs
+_080DE8AC: .4byte 0x0000ffff
+ thumb_func_end sub_80DE7DC
+
+ thumb_func_start sub_80DE8B0
+sub_80DE8B0: @ 80DE8B0
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080DE914 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ mov r5, sp
+ adds r5, 0x2
+ movs r1, 0
+ mov r2, sp
+ adds r3, r5, 0
+ bl sub_8076D9C
+ ldr r0, _080DE918 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DE8E4
+ ldr r1, _080DE91C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_080DE8E4:
+ ldr r1, _080DE91C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x2E]
+ mov r2, sp
+ ldrh r0, [r1, 0x4]
+ ldrh r2, [r2]
+ adds r0, r2
+ strh r0, [r4, 0x32]
+ ldrh r0, [r1, 0x6]
+ ldrh r5, [r5]
+ adds r0, r5
+ strh r0, [r4, 0x36]
+ ldr r0, _080DE920 @ =0x0000ffce
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_8075068
+ ldr r0, _080DE924 @ =sub_80DE928
+ str r0, [r4, 0x1C]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE914: .4byte gBattleAnimTarget
+_080DE918: .4byte gBattleAnimAttacker
+_080DE91C: .4byte gBattleAnimArgs
+_080DE920: .4byte 0x0000ffce
+_080DE924: .4byte sub_80DE928
+ thumb_func_end sub_80DE8B0
+
+ thumb_func_start sub_80DE928
+sub_80DE928: @ 80DE928
+ push {r4,lr}
+ adds r4, r0, 0
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DE94A
+ movs r1, 0
+ movs r0, 0x1E
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ ldr r0, _080DE950 @ =sub_8074C44
+ str r0, [r4, 0x1C]
+ ldr r1, _080DE954 @ =sub_80DE958
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+_080DE94A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE950: .4byte sub_8074C44
+_080DE954: .4byte sub_80DE958
+ thumb_func_end sub_80DE928
+
+ thumb_func_start sub_80DE958
+sub_80DE958: @ 80DE958
+ push {lr}
+ adds r3, r0, 0
+ ldrh r1, [r3, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080DE984
+ 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]
+_080DE984:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ bne _080DE998
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080DE998:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DE958
+
+ thumb_func_start sub_80DE99C
+sub_80DE99C: @ 80DE99C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ bl sub_8074FCC
+ ldr r5, _080DE9CC @ =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]
+ ldr r0, _080DE9D0 @ =sub_8074F6C
+ str r0, [r4, 0x1C]
+ ldr r1, _080DE9D4 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DE9CC: .4byte gBattleAnimArgs
+_080DE9D0: .4byte sub_8074F6C
+_080DE9D4: .4byte DestroyAnimSprite
+ thumb_func_end sub_80DE99C
+
+ thumb_func_start sub_80DE9D8
+sub_80DE9D8: @ 80DE9D8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DEA38
+ adds r0, r4, 0
+ bl sub_8074FCC
+ ldr r5, _080DEA14 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ adds r0, r4, 0
+ bl sub_8074FF8
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DEA2C
+ ldr r0, _080DEA18 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DEA1C
+ ldrh r0, [r5, 0x4]
+ b _080DEA32
+ .align 2, 0
+_080DEA14: .4byte gBattleAnimArgs
+_080DEA18: .4byte gBattleAnimAttacker
+_080DEA1C:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+ strh r0, [r4, 0x30]
+ movs r2, 0x6
+ ldrsh r0, [r5, r2]
+ negs r0, r0
+ b _080DEA36
+_080DEA2C:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+_080DEA32:
+ strh r0, [r4, 0x30]
+ ldrh r0, [r5, 0x6]
+_080DEA36:
+ strh r0, [r4, 0x32]
+_080DEA38:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ movs r3, 0xFF
+ ldrh r1, [r4, 0x30]
+ ldrh r2, [r4, 0x34]
+ adds r1, r2
+ strh r1, [r4, 0x34]
+ ldrh r1, [r4, 0x32]
+ ldrh r2, [r4, 0x36]
+ adds r1, r2
+ strh r1, [r4, 0x36]
+ movs r2, 0x34
+ ldrsh r1, [r4, r2]
+ lsrs r2, r1, 31
+ adds r1, r2
+ asrs r1, 1
+ strh r1, [r4, 0x24]
+ ands r0, r3
+ movs r1, 0x5
+ bl Sin
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ lsrs r2, r1, 31
+ adds r1, r2
+ asrs r1, 1
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xF0
+ bls _080DEA90
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080DEA90:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DE9D8
+
+ thumb_func_start sub_80DEA98
+sub_80DEA98: @ 80DEA98
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080DEAAE
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080DEAAE:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DEA98
+
+ thumb_func_start sub_80DEAB4
+sub_80DEAB4: @ 80DEAB4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _080DEAD0 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080DEAD8
+ ldr r1, _080DEAD4 @ =gBattleAnimArgs
+ movs r0, 0
+ b _080DEADC
+ .align 2, 0
+_080DEAD0: .4byte gBattleAnimTarget
+_080DEAD4: .4byte gBattleAnimArgs
+_080DEAD8:
+ ldr r1, _080DEAEC @ =gBattleAnimArgs
+ movs r0, 0x1
+_080DEADC:
+ strh r0, [r1, 0xE]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEAEC: .4byte gBattleAnimArgs
+ thumb_func_end sub_80DEAB4
+
+ thumb_func_start sub_80DEAF0
+sub_80DEAF0: @ 80DEAF0
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _080DEB04 @ =gUnknown_2037EE8
+ ldr r0, [r0]
+ cmp r0, 0
+ ble _080DEB0C
+ ldr r1, _080DEB08 @ =gBattleAnimArgs
+ movs r0, 0
+ b _080DEB10
+ .align 2, 0
+_080DEB04: .4byte gUnknown_2037EE8
+_080DEB08: .4byte gBattleAnimArgs
+_080DEB0C:
+ ldr r1, _080DEB1C @ =gBattleAnimArgs
+ movs r0, 0x1
+_080DEB10:
+ strh r0, [r1, 0xE]
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEB1C: .4byte gBattleAnimArgs
+ thumb_func_end sub_80DEAF0
+
+ thumb_func_start sub_80DEB20
+sub_80DEB20: @ 80DEB20
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r1, _080DEB7C @ =0x00001f3f
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 8
+ movs r0, 0
+ bl SetGpuRegBits
+ ldr r0, _080DEB80 @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r4, _080DEB84 @ =gUnknown_2022986
+ strh r1, [r4]
+ movs r0, 0x40
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x44
+ bl SetGpuReg
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075114
+ ldrb r1, [r5, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080DEB88 @ =sub_80DEB8C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEB7C: .4byte 0x00001f3f
+_080DEB80: .4byte gUnknown_2022984
+_080DEB84: .4byte gUnknown_2022986
+_080DEB88: .4byte sub_80DEB8C
+ thumb_func_end sub_80DEB20
+
+ thumb_func_start sub_80DEB8C
+sub_80DEB8C: @ 80DEB8C
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bhi _080DEC4C
+ lsls r0, 2
+ ldr r1, _080DEBA4 @ =_080DEBA8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080DEBA4: .4byte _080DEBA8
+ .align 2, 0
+_080DEBA8:
+ .4byte _080DEBC0
+ .4byte _080DEBDE
+ .4byte _080DEBFE
+ .4byte _080DEBDE
+ .4byte _080DEC1E
+ .4byte _080DEC2E
+_080DEBC0:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080DEC4C
+ b _080DEC26
+_080DEBDE:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x75
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x15
+ bne _080DEC4C
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ b _080DEC26
+_080DEBFE:
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x75
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x29
+ bne _080DEC4C
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ b _080DEC26
+_080DEC1E:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+_080DEC26:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080DEC4C
+_080DEC2E:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080DEC4C
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080DEC54 @ =sub_80DEC58
+ str r0, [r4, 0x1C]
+_080DEC4C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEC54: .4byte sub_80DEC58
+ thumb_func_end sub_80DEB8C
+
+ thumb_func_start sub_80DEC58
+sub_80DEC58: @ 80DEC58
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080DEC8C @ =0x00003f3f
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r0, 0
+ bl GetGpuReg
+ adds r1, r0, 0
+ movs r2, 0x80
+ lsls r2, 8
+ adds r0, r2, 0
+ eors r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEC8C: .4byte 0x00003f3f
+ thumb_func_end sub_80DEC58
+
+ thumb_func_start sub_80DEC90
+sub_80DEC90: @ 80DEC90
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080DED04 @ =gBattleAnimArgs
+ movs r1, 0x6
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080DECBC
+ ldr r4, _080DED08 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+_080DECBC:
+ ldrh r0, [r6]
+ ldrh r2, [r5, 0x20]
+ adds r0, r2
+ movs r3, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r6, 0x2]
+ ldrh r4, [r5, 0x22]
+ adds r0, r4
+ strh r0, [r5, 0x22]
+ ldrh r2, [r5, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x10
+ ldr r4, _080DED0C @ =0x000003ff
+ adds r0, r4, 0
+ ands r1, r0
+ ldr r0, _080DED10 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080DED18
+ ldrb r1, [r5, 0x3]
+ movs r0, 0x3F
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x10
+ orrs r0, r1
+ strb r0, [r5, 0x3]
+ ldr r0, _080DED14 @ =0x0000fff4
+ strh r0, [r5, 0x24]
+ movs r0, 0x2
+ b _080DED1E
+ .align 2, 0
+_080DED04: .4byte gBattleAnimArgs
+_080DED08: .4byte gBattleAnimAttacker
+_080DED0C: .4byte 0x000003ff
+_080DED10: .4byte 0xfffffc00
+_080DED14: .4byte 0x0000fff4
+_080DED18:
+ movs r0, 0xC
+ strh r0, [r5, 0x24]
+ ldr r0, _080DED3C @ =0x0000fffe
+_080DED1E:
+ strh r0, [r5, 0x30]
+ ldr r1, _080DED40 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x2E]
+ movs r2, 0x34
+ ldrsh r0, [r5, r2]
+ cmp r0, 0xFF
+ beq _080DED32
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x34]
+_080DED32:
+ ldr r0, _080DED44 @ =sub_80DED48
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DED3C: .4byte 0x0000fffe
+_080DED40: .4byte gBattleAnimArgs
+_080DED44: .4byte sub_80DED48
+ thumb_func_end sub_80DEC90
+
+ thumb_func_start sub_80DED48
+sub_80DED48: @ 80DED48
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r2, [r4, 0x32]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DED86
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080DEDA6
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x32]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DEDA6
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xD7
+ bl PlaySE1WithPanning
+ b _080DEDA6
+_080DED86:
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x30]
+ subs r0, r1
+ strh r0, [r4, 0x24]
+ movs r1, 0x24
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bge _080DED98
+ negs r0, r0
+_080DED98:
+ cmp r0, 0xC
+ bne _080DEDA6
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ subs r0, r2, 0x1
+ strh r0, [r4, 0x32]
+_080DEDA6:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DEDB4
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080DEDB4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DED48
+
+ thumb_func_start sub_80DEDBC
+sub_80DEDBC: @ 80DEDBC
+ push {lr}
+ ldrb r2, [r0, 0x1]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r2
+ movs r2, 0x8
+ orrs r1, r2
+ strb r1, [r0, 0x1]
+ movs r1, 0xFF
+ strh r1, [r0, 0x34]
+ bl sub_80DEC90
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DEDBC
+
+ thumb_func_start sub_80DEDD8
+sub_80DEDD8: @ 80DEDD8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DEE2C
+ ldr r1, _080DEE14 @ =0x00001f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080DEE18 @ =gUnknown_2022988
+ ldr r2, _080DEE1C @ =0x000098f0
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _080DEE20 @ =gUnknown_202298A
+ movs r0, 0xA0
+ strh r0, [r1]
+ ldr r0, _080DEE24 @ =gUnknown_2022984
+ ldrh r1, [r0]
+ movs r0, 0x42
+ bl SetGpuReg
+ ldr r0, _080DEE28 @ =gUnknown_2022986
+ ldrh r1, [r0]
+ movs r0, 0x46
+ bl SetGpuReg
+ b _080DEE5C
+ .align 2, 0
+_080DEE14: .4byte 0x00001f3f
+_080DEE18: .4byte gUnknown_2022988
+_080DEE1C: .4byte 0x000098f0
+_080DEE20: .4byte gUnknown_202298A
+_080DEE24: .4byte gUnknown_2022984
+_080DEE28: .4byte gUnknown_2022986
+_080DEE2C:
+ ldr r1, _080DEE68 @ =0x00001f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r1, _080DEE6C @ =gUnknown_2022988
+ movs r0, 0xF0
+ strh r0, [r1]
+ ldr r4, _080DEE70 @ =gUnknown_202298A
+ ldr r1, _080DEE74 @ =0x000078a0
+ adds r0, r1, 0
+ strh r0, [r4]
+ movs r0, 0x42
+ movs r1, 0xF0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x46
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 7
+ movs r0, 0
+ bl SetGpuRegBits
+_080DEE5C:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEE68: .4byte 0x00001f3f
+_080DEE6C: .4byte gUnknown_2022988
+_080DEE70: .4byte gUnknown_202298A
+_080DEE74: .4byte 0x000078a0
+ thumb_func_end sub_80DEDD8
+
+ thumb_func_start sub_80DEE78
+sub_80DEE78: @ 80DEE78
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080DEEB0 @ =0x00003f3f
+ movs r0, 0x48
+ bl SetGpuReg
+ ldr r0, _080DEEB4 @ =gUnknown_2022988
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080DEEB8 @ =gUnknown_202298A
+ strh r1, [r0]
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DEEA4
+ movs r1, 0x80
+ lsls r1, 7
+ movs r0, 0
+ bl ClearGpuRegBits
+_080DEEA4:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEEB0: .4byte 0x00003f3f
+_080DEEB4: .4byte gUnknown_2022988
+_080DEEB8: .4byte gUnknown_202298A
+ thumb_func_end sub_80DEE78
+
+ thumb_func_start sub_80DEEBC
+sub_80DEEBC: @ 80DEEBC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080DEED0 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080DEED8
+ ldr r4, _080DEED4 @ =gBattleAnimAttacker
+ b _080DEEDA
+ .align 2, 0
+_080DEED0: .4byte gBattleAnimArgs
+_080DEED4: .4byte gBattleAnimAttacker
+_080DEED8:
+ ldr r4, _080DEF2C @ =gBattleAnimTarget
+_080DEEDA:
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x2]
+ adds r0, r6
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r2, _080DEF30 @ =gBattleAnimArgs
+ ldrh r0, [r2, 0x4]
+ strh r0, [r5, 0x26]
+ movs r3, 0
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r4, [r2, 0x6]
+ movs r6, 0x6
+ ldrsh r1, [r2, r6]
+ cmp r0, r1
+ ble _080DEF12
+ movs r3, 0x1
+_080DEF12:
+ strh r3, [r5, 0x2E]
+ movs r0, 0
+ strh r0, [r5, 0x30]
+ ldrh r0, [r2, 0x8]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r2, 0xA]
+ strh r0, [r5, 0x34]
+ strh r4, [r5, 0x36]
+ ldr r0, _080DEF34 @ =sub_80DEF38
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DEF2C: .4byte gBattleAnimTarget
+_080DEF30: .4byte gBattleAnimArgs
+_080DEF34: .4byte sub_80DEF38
+ thumb_func_end sub_80DEEBC
+
+ thumb_func_start sub_80DEF38
+sub_80DEF38: @ 80DEF38
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x32]
+ ldrh r1, [r2, 0x30]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r2, 0x30]
+ ldr r1, _080DEF80 @ =gSineTable
+ movs r3, 0x30
+ ldrsh r0, [r2, r3]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 20
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x34]
+ ldrh r3, [r2, 0x26]
+ adds r1, r0, r3
+ strh r1, [r2, 0x26]
+ movs r3, 0x2E
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ beq _080DEF84
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r3, 0x36
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bge _080DEF96
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+ b _080DEF96
+ .align 2, 0
+_080DEF80: .4byte gSineTable
+_080DEF84:
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r3, 0x36
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ ble _080DEF96
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080DEF96:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DEF38
+
+ thumb_func_start sub_80DEF9C
+sub_80DEF9C: @ 80DEF9C
+ push {r4-r7,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080DEFBC @ =gTasks
+ adds r5, r1, r0
+ ldr r0, _080DEFC0 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080DEFC8
+ ldr r4, _080DEFC4 @ =gBattleAnimAttacker
+ b _080DEFCA
+ .align 2, 0
+_080DEFBC: .4byte gTasks
+_080DEFC0: .4byte gBattleAnimArgs
+_080DEFC4: .4byte gBattleAnimAttacker
+_080DEFC8:
+ ldr r4, _080DF010 @ =gBattleAnimTarget
+_080DEFCA:
+ ldrb r0, [r4]
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r4]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r7, r0, 24
+ adds r0, r6, 0
+ adds r1, r0, 0
+ adds r1, 0x24
+ movs r2, 0
+ strh r1, [r5, 0x8]
+ strh r1, [r5, 0xA]
+ subs r0, 0x21
+ strh r0, [r5, 0xC]
+ cmp r0, 0
+ bge _080DEFF4
+ strh r2, [r5, 0xC]
+_080DEFF4:
+ ldrh r0, [r5, 0x8]
+ strh r0, [r5, 0xE]
+ movs r0, 0x8
+ strh r0, [r5, 0x10]
+ ldr r1, _080DF014 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x12]
+ strh r2, [r5, 0x14]
+ strh r2, [r5, 0x16]
+ cmp r7, 0x1
+ bne _080DF01C
+ ldr r0, _080DF018 @ =gBattle_BG1_X
+ b _080DF01E
+ .align 2, 0
+_080DF010: .4byte gBattleAnimTarget
+_080DF014: .4byte gBattleAnimArgs
+_080DF018: .4byte gBattle_BG1_X
+_080DF01C:
+ ldr r0, _080DF03C @ =gBattle_BG2_X
+_080DF01E:
+ ldrh r2, [r0]
+ strh r2, [r5, 0x18]
+ adds r3, r2, 0
+ adds r3, 0xF0
+ strh r3, [r5, 0x1A]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x1C]
+ movs r4, 0x4
+ ldrsh r0, [r1, r4]
+ cmp r0, 0
+ bne _080DF040
+ strh r3, [r5, 0x1E]
+ ldrh r3, [r5, 0x18]
+ b _080DF044
+ .align 2, 0
+_080DF03C: .4byte gBattle_BG2_X
+_080DF040:
+ strh r2, [r5, 0x1E]
+ ldrh r3, [r5, 0x1A]
+_080DF044:
+ movs r0, 0
+ strh r0, [r5, 0x26]
+ ldrh r1, [r5, 0xC]
+ lsls r2, r1, 16
+ asrs r1, r2, 16
+ movs r6, 0xE
+ ldrsh r0, [r5, r6]
+ cmp r1, r0
+ bgt _080DF07A
+ ldr r4, _080DF084 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r0, r4
+ mov r12, r0
+_080DF060:
+ asrs r2, 16
+ lsls r1, r2, 1
+ adds r0, r1, r4
+ strh r3, [r0]
+ add r1, r12
+ strh r3, [r1]
+ adds r2, 0x1
+ lsls r2, 16
+ asrs r1, r2, 16
+ movs r6, 0xE
+ ldrsh r0, [r5, r6]
+ cmp r1, r0
+ ble _080DF060
+_080DF07A:
+ cmp r7, 0x1
+ bne _080DF08C
+ ldr r0, _080DF088 @ =0x04000014
+ b _080DF08E
+ .align 2, 0
+_080DF084: .4byte gScanlineEffectRegBuffers
+_080DF088: .4byte 0x04000014
+_080DF08C:
+ ldr r0, _080DF0B8 @ =0x04000018
+_080DF08E:
+ str r0, [sp]
+ ldr r0, _080DF0BC @ =0xa2600001
+ str r0, [sp, 0x4]
+ mov r1, sp
+ movs r2, 0
+ movs r0, 0x1
+ strb r0, [r1, 0x8]
+ mov r0, sp
+ strb r2, [r0, 0x9]
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ bl ScanlineEffect_SetParams
+ ldr r0, _080DF0C0 @ =sub_80DF0C4
+ str r0, [r5]
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF0B8: .4byte 0x04000018
+_080DF0BC: .4byte 0xa2600001
+_080DF0C0: .4byte sub_80DF0C4
+ thumb_func_end sub_80DEF9C
+
+ thumb_func_start sub_80DF0C4
+sub_80DF0C4: @ 80DF0C4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _080DF114 @ =gTasks
+ adds r4, r0, r1
+ ldrh r0, [r4, 0x8]
+ ldrh r1, [r4, 0x12]
+ subs r0, r1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r2, [r4, 0xC]
+ movs r3, 0xC
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ bge _080DF0EC
+ strh r2, [r4, 0x8]
+_080DF0EC:
+ ldrh r1, [r4, 0x10]
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080DF118
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r4, 0x12]
+ subs r0, r1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ ldrh r2, [r4, 0xC]
+ movs r3, 0xC
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ bge _080DF11C
+ strh r2, [r4, 0xA]
+ movs r0, 0x1
+ strh r0, [r4, 0x26]
+ b _080DF11C
+ .align 2, 0
+_080DF114: .4byte gTasks
+_080DF118:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x10]
+_080DF11C:
+ ldrh r0, [r4, 0x14]
+ adds r0, 0x1
+ strh r0, [r4, 0x14]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080DF148
+ movs r0, 0
+ strh r0, [r4, 0x14]
+ movs r1, 0
+ movs r2, 0x16
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080DF13A
+ movs r1, 0x1
+_080DF13A:
+ strh r1, [r4, 0x16]
+ cmp r1, 0
+ beq _080DF144
+ ldrh r0, [r4, 0x18]
+ b _080DF146
+_080DF144:
+ ldrh r0, [r4, 0x1A]
+_080DF146:
+ strh r0, [r4, 0x20]
+_080DF148:
+ ldrh r1, [r4, 0x8]
+ lsls r3, r1, 16
+ asrs r1, r3, 16
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bge _080DF17C
+ ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+_080DF15E:
+ asrs r3, 16
+ lsls r1, r3, 1
+ adds r2, r1, r5
+ ldrh r0, [r4, 0x20]
+ strh r0, [r2]
+ adds r1, r6
+ ldrh r0, [r4, 0x20]
+ strh r0, [r1]
+ adds r3, 0x1
+ lsls r3, 16
+ asrs r1, r3, 16
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ blt _080DF15E
+_080DF17C:
+ ldrh r1, [r4, 0xA]
+ lsls r3, r1, 16
+ asrs r1, r3, 16
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bgt _080DF1B0
+ ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+_080DF192:
+ asrs r3, 16
+ lsls r1, r3, 1
+ adds r2, r1, r5
+ ldrh r0, [r4, 0x1E]
+ strh r0, [r2]
+ adds r1, r6
+ ldrh r0, [r4, 0x1E]
+ strh r0, [r1]
+ adds r3, 0x1
+ lsls r3, 16
+ asrs r1, r3, 16
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ ble _080DF192
+_080DF1B0:
+ movs r3, 0x26
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080DF1CC
+ movs r1, 0x1C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080DF1C6
+ ldr r1, _080DF1D8 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+_080DF1C6:
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080DF1CC:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF1D4: .4byte gScanlineEffectRegBuffers
+_080DF1D8: .4byte gScanlineEffect
+ thumb_func_end sub_80DF0C4
+
+ thumb_func_start sub_80DF1DC
+sub_80DF1DC: @ 80DF1DC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080DF230 @ =gTasks
+ adds r4, r0
+ movs r5, 0
+ strh r5, [r4, 0x8]
+ strh r5, [r4, 0xA]
+ ldr r6, _080DF234 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0xC]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0xE]
+ movs r0, 0x20
+ strh r0, [r4, 0x10]
+ ldr r0, _080DF238 @ =0x0000ffec
+ strh r0, [r4, 0x12]
+ strh r5, [r4, 0x14]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _080DF23C @ =sub_80DF240
+ str r0, [r4]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF230: .4byte gTasks
+_080DF234: .4byte gBattleAnimAttacker
+_080DF238: .4byte 0x0000ffec
+_080DF23C: .4byte sub_80DF240
+ thumb_func_end sub_80DF1DC
+
+ thumb_func_start sub_80DF240
+sub_80DF240: @ 80DF240
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080DF26C @ =gTasks
+ adds r6, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x5
+ bls _080DF260
+ b _080DF41A
+_080DF260:
+ lsls r0, 2
+ ldr r1, _080DF270 @ =_080DF274
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080DF26C: .4byte gTasks
+_080DF270: .4byte _080DF274
+ .align 2, 0
+_080DF274:
+ .4byte _080DF28C
+ .4byte _080DF34C
+ .4byte _080DF37A
+ .4byte _080DF38E
+ .4byte _080DF3A4
+ .4byte _080DF40C
+_080DF28C:
+ movs r0, 0xC
+ ldrsh r2, [r6, r0]
+ ldrh r1, [r6, 0xA]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080DF2A2
+ movs r1, 0x10
+ ldrsh r0, [r6, r1]
+ subs r0, r2, r0
+ b _080DF2A8
+_080DF2A2:
+ movs r1, 0x10
+ ldrsh r0, [r6, r1]
+ adds r0, r2, r0
+_080DF2A8:
+ lsls r0, 16
+ lsrs r1, r0, 16
+ ldrh r2, [r6, 0x12]
+ ldrh r0, [r6, 0xE]
+ adds r2, r0
+ ldr r0, _080DF33C @ =gUnknown_83E398C
+ lsls r1, 16
+ asrs r1, 16
+ lsls r2, 16
+ asrs r2, 16
+ ldrb r4, [r6, 0xA]
+ movs r3, 0x6
+ subs r3, r4
+ lsls r3, 24
+ lsrs r3, 24
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xB3
+ bl PlaySE12WithPanning
+ cmp r4, 0x40
+ beq _080DF30C
+ ldr r5, _080DF340 @ =gSprites
+ lsls r1, r4, 4
+ adds r1, r4
+ lsls r1, 2
+ adds r3, r1, r5
+ ldrh r0, [r6, 0xA]
+ movs r2, 0x1
+ ands r2, r0
+ adds r3, 0x3F
+ ldrb r4, [r3]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r4
+ orrs r0, r2
+ strb r0, [r3]
+ adds r5, 0x1C
+ adds r1, r5
+ ldr r0, _080DF344 @ =SpriteCallbackDummy
+ str r0, [r1]
+_080DF30C:
+ ldrh r1, [r6, 0xA]
+ movs r4, 0x1
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080DF324
+ ldrh r0, [r6, 0x10]
+ subs r0, 0x6
+ strh r0, [r6, 0x10]
+ ldrh r0, [r6, 0x12]
+ subs r0, 0x6
+ strh r0, [r6, 0x12]
+_080DF324:
+ ldrh r1, [r6, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080DF348 @ =gUnknown_83FF080
+ adds r0, r6, 0
+ bl sub_80762D0
+ ldrh r0, [r6, 0xA]
+ adds r0, 0x1
+ strh r0, [r6, 0xA]
+ strh r4, [r6, 0x8]
+ b _080DF41A
+ .align 2, 0
+_080DF33C: .4byte gUnknown_83E398C
+_080DF340: .4byte gSprites
+_080DF344: .4byte SpriteCallbackDummy
+_080DF348: .4byte gUnknown_83FF080
+_080DF34C:
+ adds r0, r6, 0
+ bl sub_8076308
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080DF41A
+ movs r2, 0xA
+ ldrsh r1, [r6, r2]
+ cmp r1, 0x6
+ bne _080DF36C
+ movs r0, 0x8
+ strh r0, [r6, 0x14]
+ movs r0, 0x3
+ strh r0, [r6, 0x8]
+ b _080DF41A
+_080DF36C:
+ cmp r1, 0x2
+ bgt _080DF372
+ movs r0, 0xA
+_080DF372:
+ strh r0, [r6, 0x14]
+ movs r0, 0x2
+ strh r0, [r6, 0x8]
+ b _080DF41A
+_080DF37A:
+ ldrh r0, [r6, 0x14]
+ movs r2, 0x14
+ ldrsh r1, [r6, r2]
+ cmp r1, 0
+ beq _080DF38A
+ subs r0, 0x1
+ strh r0, [r6, 0x14]
+ b _080DF41A
+_080DF38A:
+ strh r1, [r6, 0x8]
+ b _080DF41A
+_080DF38E:
+ ldrh r1, [r6, 0x14]
+ movs r2, 0x14
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ beq _080DF39E
+ subs r0, r1, 0x1
+ strh r0, [r6, 0x14]
+ b _080DF41A
+_080DF39E:
+ movs r0, 0x4
+ strh r0, [r6, 0x8]
+ b _080DF41A
+_080DF3A4:
+ movs r5, 0
+ movs r7, 0
+ ldr r3, _080DF400 @ =gSprites
+ movs r0, 0x1C
+ adds r0, r3
+ mov r8, r0
+_080DF3B0:
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r4, r0, 2
+ adds r0, r3, 0
+ adds r0, 0x14
+ adds r0, r4, r0
+ ldr r1, [r0]
+ ldr r0, _080DF404 @ =gUnknown_83E398C
+ cmp r1, r0
+ bne _080DF3EC
+ adds r0, r4, r3
+ strh r2, [r0, 0x2E]
+ movs r1, 0x6
+ strh r1, [r0, 0x30]
+ movs r1, 0x2
+ str r2, [sp]
+ str r3, [sp, 0x4]
+ bl StartSpriteAnim
+ mov r0, r8
+ adds r1, r4, r0
+ ldr r0, _080DF408 @ =sub_80DF428
+ str r0, [r1]
+ adds r0, r7, 0x1
+ lsls r0, 16
+ lsrs r7, r0, 16
+ ldr r2, [sp]
+ ldr r3, [sp, 0x4]
+ cmp r7, 0x6
+ beq _080DF3F6
+_080DF3EC:
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0x3F
+ bls _080DF3B0
+_080DF3F6:
+ strh r7, [r6, 0x14]
+ movs r0, 0x5
+ strh r0, [r6, 0x8]
+ b _080DF41A
+ .align 2, 0
+_080DF400: .4byte gSprites
+_080DF404: .4byte gUnknown_83E398C
+_080DF408: .4byte sub_80DF428
+_080DF40C:
+ movs r1, 0x14
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080DF41A
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080DF41A:
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF240
+
+ thumb_func_start sub_80DF428
+sub_80DF428: @ 80DF428
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080DF45C
+ ldr r3, _080DF464 @ =gTasks
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x2E
+ 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
+_080DF45C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF464: .4byte gTasks
+ thumb_func_end sub_80DF428
+
+ thumb_func_start sub_80DF468
+sub_80DF468: @ 80DF468
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080DF47C
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075160
+_080DF47C:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x27
+ bgt _080DF4AE
+ ldrh r0, [r5, 0x2E]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080DF4A0
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ b _080DF4AC
+_080DF4A0:
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+_080DF4AC:
+ strb r0, [r2]
+_080DF4AE:
+ movs r2, 0x2E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0x1E
+ ble _080DF4C4
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_080DF4C4:
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x3D
+ bne _080DF510
+ ldr r1, _080DF518 @ =DestroyAnimSprite
+ adds r0, r5, 0
+ bl StoreSpriteCallbackInData6
+ ldrh r0, [r5, 0x24]
+ ldrh r2, [r5, 0x20]
+ adds r0, r2
+ movs r1, 0
+ strh r0, [r5, 0x20]
+ ldrh r0, [r5, 0x26]
+ ldrh r2, [r5, 0x22]
+ adds r0, r2
+ strh r0, [r5, 0x22]
+ strh r1, [r5, 0x24]
+ strh r1, [r5, 0x26]
+ movs r0, 0x14
+ strh r0, [r5, 0x2E]
+ ldr r4, _080DF51C @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ ldr r0, _080DF520 @ =sub_8075590
+ str r0, [r5, 0x1C]
+_080DF510:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF518: .4byte DestroyAnimSprite
+_080DF51C: .4byte gBattleAnimTarget
+_080DF520: .4byte sub_8075590
+ thumb_func_end sub_80DF468
+
+ thumb_func_start sub_80DF524
+sub_80DF524: @ 80DF524
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080DF544 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080DF548
+ cmp r0, 0x1
+ beq _080DF568
+ b _080DF57A
+ .align 2, 0
+_080DF544: .4byte gTasks
+_080DF548:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080DF564 @ =gUnknown_83FF130
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080DF57A
+ .align 2, 0
+_080DF564: .4byte gUnknown_83FF130
+_080DF568:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DF57A
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080DF57A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF524
+
+ thumb_func_start sub_80DF580
+sub_80DF580: @ 80DF580
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _080DF5E0
+ cmp r0, 0x1
+ bgt _080DF5A0
+ cmp r0, 0
+ beq _080DF5AA
+ b _080DF682
+_080DF5A0:
+ cmp r0, 0x2
+ beq _080DF610
+ cmp r0, 0x3
+ beq _080DF664
+ b _080DF682
+_080DF5AA:
+ ldr r4, _080DF5DC @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_80758E0
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r5, 0x30]
+ strh r0, [r5, 0x32]
+ b _080DF658
+ .align 2, 0
+_080DF5DC: .4byte gBattleAnimAttacker
+_080DF5E0:
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x60
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ subs r0, 0x1A
+ strh r0, [r5, 0x32]
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ movs r0, 0x32
+ ldrsh r2, [r5, r0]
+ adds r0, r6, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080DF610
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+_080DF610:
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x60
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x30
+ strh r0, [r5, 0x32]
+ movs r2, 0x30
+ ldrsh r1, [r5, r2]
+ movs r0, 0x32
+ ldrsh r2, [r5, r0]
+ adds r0, r6, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r5, 0x34]
+ adds r0, 0x1
+ strh r0, [r5, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bne _080DF682
+ movs r0, 0
+ strh r0, [r5, 0x34]
+ ldr r1, _080DF660 @ =gSprites
+ lsls r0, r6, 4
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r1
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ adds r0, r6, 0
+ bl sub_8075980
+_080DF658:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080DF682
+ .align 2, 0
+_080DF660: .4byte gSprites
+_080DF664:
+ ldrh r0, [r5, 0x26]
+ subs r0, 0x6
+ strh r0, [r5, 0x26]
+ movs r1, 0x22
+ ldrsh r0, [r5, r1]
+ movs r2, 0x26
+ ldrsh r1, [r5, r2]
+ adds r0, r1
+ movs r1, 0x20
+ negs r1, r1
+ cmp r0, r1
+ bge _080DF682
+ adds r0, r5, 0
+ bl DestroyAnimSprite
+_080DF682:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF580
+
+ thumb_func_start sub_80DF688
+sub_80DF688: @ 80DF688
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080DF6A0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DF6A8
+ ldr r0, _080DF6A4 @ =0x0000fff0
+ b _080DF6AC
+ .align 2, 0
+_080DF6A0: .4byte gBattleAnimAttacker
+_080DF6A4: .4byte 0x0000fff0
+_080DF6A8:
+ movs r0, 0x80
+ lsls r0, 1
+_080DF6AC:
+ strh r0, [r4, 0x20]
+ movs r0, 0
+ strh r0, [r4, 0x22]
+ ldr r0, _080DF6BC @ =sub_80DF6C0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF6BC: .4byte sub_80DF6C0
+ thumb_func_end sub_80DF688
+
+ thumb_func_start sub_80DF6C0
+sub_80DF6C0: @ 80DF6C0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x48
+ strh r0, [r4, 0x2E]
+ ldr r0, _080DF6E0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DF6E4
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 20
+ b _080DF6EC
+ .align 2, 0
+_080DF6E0: .4byte gBattleAnimAttacker
+_080DF6E4:
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 20
+ negs r0, r0
+_080DF6EC:
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x10
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x26]
+ adds r5, r0, r1
+ strh r5, [r4, 0x26]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x3
+ bl __modsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _080DF738
+ ldr r0, _080DF758 @ =gUnknown_83FF180
+ ldrh r1, [r4, 0x24]
+ ldrh r2, [r4, 0x20]
+ adds r1, r2
+ lsls r1, 16
+ asrs r1, 16
+ ldrh r2, [r4, 0x22]
+ adds r2, r5
+ lsls r2, 16
+ asrs r2, 16
+ adds r3, r4, 0
+ adds r3, 0x43
+ ldrb r3, [r3]
+ adds r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ bl CreateSpriteAndAnimate
+_080DF738:
+ movs r1, 0x20
+ ldrsh r0, [r4, r1]
+ movs r2, 0x24
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ adds r0, 0x20
+ movs r1, 0x98
+ lsls r1, 1
+ cmp r0, r1
+ bls _080DF752
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080DF752:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF758: .4byte gUnknown_83FF180
+ thumb_func_end sub_80DF6C0
+
+ thumb_func_start sub_80DF75C
+sub_80DF75C: @ 80DF75C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl Random
+ movs r1, 0x3
+ ands r0, r1
+ cmp r0, 0
+ bne _080DF776
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x4
+ b _080DF77E
+_080DF776:
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x5
+_080DF77E:
+ ldr r3, _080DF7B0 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080DF7B4 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ bl Random
+ movs r1, 0x7
+ ands r0, r1
+ adds r1, r0, 0
+ cmp r1, 0x3
+ ble _080DF7A0
+ negs r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+_080DF7A0:
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _080DF7B8 @ =sub_80DF7BC
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF7B0: .4byte 0x000003ff
+_080DF7B4: .4byte 0xfffffc00
+_080DF7B8: .4byte sub_80DF7BC
+ thumb_func_end sub_80DF75C
+
+ thumb_func_start sub_80DF7BC
+sub_80DF7BC: @ 80DF7BC
+ 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, 0x1D
+ bgt _080DF7FE
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _080DF832
+ 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]
+ movs r0, 0
+ b _080DF830
+_080DF7FE:
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x2
+ bne _080DF814
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_080DF814:
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x3
+ bne _080DF82C
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080DF844 @ =0x0000ffff
+ strh r0, [r3, 0x30]
+_080DF82C:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+_080DF830:
+ strh r0, [r3, 0x30]
+_080DF832:
+ movs r1, 0x2E
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x3C
+ ble _080DF840
+ adds r0, r3, 0
+ bl DestroySprite
+_080DF840:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DF844: .4byte 0x0000ffff
+ thumb_func_end sub_80DF7BC
+
+ thumb_func_start sub_80DF848
+sub_80DF848: @ 80DF848
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080DF880 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DF888
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080DF884 @ =gUnknown_83FF198
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080DF89A
+ .align 2, 0
+_080DF880: .4byte gTasks
+_080DF884: .4byte gUnknown_83FF198
+_080DF888:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DF89A
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080DF89A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF848
+
+ thumb_func_start sub_80DF8A0
+sub_80DF8A0: @ 80DF8A0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080DF8D8 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DF8E0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080DF8DC @ =gUnknown_83FF1C0
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080DF8F2
+ .align 2, 0
+_080DF8D8: .4byte gTasks
+_080DF8DC: .4byte gUnknown_83FF1C0
+_080DF8E0:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DF8F2
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080DF8F2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF8A0
+
+ thumb_func_start sub_80DF8F8
+sub_80DF8F8: @ 80DF8F8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080DF90A
+ cmp r0, 0x1
+ beq _080DF934
+ b _080DF95C
+_080DF90A:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075160
+ movs r0, 0x90
+ lsls r0, 4
+ strh r0, [r4, 0x30]
+ ldr r0, _080DF930 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080DF95C
+ .align 2, 0
+_080DF930: .4byte gBattleAnimAttacker
+_080DF934:
+ ldrh r2, [r4, 0x30]
+ lsls r1, r2, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x26]
+ subs r0, r1
+ strh r0, [r4, 0x26]
+ subs r2, 0x60
+ strh r2, [r4, 0x30]
+ movs r2, 0x22
+ ldrsh r0, [r4, r2]
+ movs r2, 0x26
+ ldrsh r1, [r4, r2]
+ adds r0, r1
+ movs r2, 0x32
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ ble _080DF95C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080DF95C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF8F8
+
+ thumb_func_start sub_80DF964
+sub_80DF964: @ 80DF964
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080DF99C @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080DF9A4
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080DF9A0 @ =gUnknown_83FF210
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080DF9B6
+ .align 2, 0
+_080DF99C: .4byte gTasks
+_080DF9A0: .4byte gUnknown_83FF210
+_080DF9A4:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DF9B6
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080DF9B6:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80DF964
+
+ thumb_func_start sub_80DF9BC
+sub_80DF9BC: @ 80DF9BC
+ push {r4-r6,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080DF9E4 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r3, r1, 0
+ cmp r0, 0x4
+ bls _080DF9DA
+ b _080DFBCE
+_080DF9DA:
+ lsls r0, 2
+ ldr r1, _080DF9E8 @ =_080DF9EC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080DF9E4: .4byte gTasks
+_080DF9E8: .4byte _080DF9EC
+ .align 2, 0
+_080DF9EC:
+ .4byte _080DFA00
+ .4byte _080DFA4C
+ .4byte _080DFA86
+ .4byte _080DFB1C
+ .4byte _080DFB58
+_080DFA00:
+ movs r0, 0x4C
+ movs r1, 0
+ bl SetGpuReg
+ ldr r0, _080DFA24 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080DFA28
+ movs r0, 0x1
+ movs r1, 0x2
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ b _080DFA32
+ .align 2, 0
+_080DFA24: .4byte gBattleAnimAttacker
+_080DFA28:
+ movs r0, 0x2
+ movs r1, 0x2
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080DFA32:
+ ldr r0, _080DFA44 @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080DFA48 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1C]
+ b _080DFB00
+ .align 2, 0
+_080DFA44: .4byte gTasks
+_080DFA48: .4byte gBattleAnimArgs
+_080DFA4C:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r5, r0, r3
+ ldrh r0, [r5, 0xC]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bgt _080DFA64
+ b _080DFBCE
+_080DFA64:
+ movs r0, 0
+ strh r0, [r5, 0xC]
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ ldrh r4, [r5, 0xA]
+ lsls r1, r4, 4
+ orrs r1, r4
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x4C
+ bl SetGpuReg
+ cmp r4, 0xF
+ beq _080DFA84
+ b _080DFBCE
+_080DFA84:
+ b _080DFB50
+_080DFA86:
+ ldr r6, _080DFAB4 @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ ldr r1, _080DFAB8 @ =gBattleAnimTarget
+ ldrb r1, [r1]
+ lsls r4, r5, 2
+ adds r2, r4, r5
+ lsls r2, 3
+ adds r2, r3
+ ldrb r2, [r2, 0x1C]
+ bl sub_8034BF4
+ ldrb r1, [r6]
+ mov r0, sp
+ bl sub_8075300
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DFABC
+ movs r1, 0
+ b _080DFAC6
+ .align 2, 0
+_080DFAB4: .4byte gBattleAnimAttacker
+_080DFAB8: .4byte gBattleAnimTarget
+_080DFABC:
+ ldrb r0, [r6]
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r1, r0, 24
+_080DFAC6:
+ ldr r0, _080DFB08 @ =gMonSpritesGfxPtr
+ ldr r2, [r0]
+ lsls r0, r1, 2
+ adds r2, 0x4
+ adds r2, r0
+ ldr r1, _080DFB0C @ =gBattleMonForms
+ ldr r0, _080DFB10 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r1, [r0]
+ lsls r1, 11
+ ldr r0, [r2]
+ adds r0, r1
+ ldr r1, [sp]
+ ldr r2, _080DFB14 @ =0x04000200
+ bl CpuSet
+ ldr r1, [sp]
+ movs r2, 0x80
+ lsls r2, 4
+ mov r0, sp
+ ldrh r3, [r0, 0xA]
+ movs r0, 0x1
+ bl LoadBgTiles
+ ldr r0, _080DFB18 @ =gTasks
+ adds r1, r4, r5
+ lsls r1, 3
+ adds r1, r0
+_080DFB00:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _080DFBCE
+ .align 2, 0
+_080DFB08: .4byte gMonSpritesGfxPtr
+_080DFB0C: .4byte gBattleMonForms
+_080DFB10: .4byte gBattleAnimAttacker
+_080DFB14: .4byte 0x04000200
+_080DFB18: .4byte gTasks
+_080DFB1C:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r5, r0, r3
+ ldrh r0, [r5, 0xC]
+ adds r1, r0, 0x1
+ strh r1, [r5, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080DFBCE
+ movs r0, 0
+ strh r0, [r5, 0xC]
+ ldrh r0, [r5, 0xA]
+ subs r0, 0x1
+ strh r0, [r5, 0xA]
+ ldrh r4, [r5, 0xA]
+ lsls r1, r4, 4
+ orrs r1, r4
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x4C
+ bl SetGpuReg
+ cmp r4, 0
+ bne _080DFBCE
+_080DFB50:
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+ b _080DFBCE
+_080DFB58:
+ movs r0, 0x4C
+ movs r1, 0
+ bl SetGpuReg
+ ldr r0, _080DFB7C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080DFB80
+ movs r0, 0x1
+ movs r1, 0x2
+ movs r2, 0
+ bl SetAnimBgAttribute
+ b _080DFB8A
+ .align 2, 0
+_080DFB7C: .4byte gBattleAnimAttacker
+_080DFB80:
+ movs r0, 0x2
+ movs r1, 0x2
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080DFB8A:
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DFBC8
+ ldr r4, _080DFBD8 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080DFBC8
+ ldr r0, _080DFBDC @ =gTasks
+ lsls r1, r5, 2
+ adds r1, r5
+ lsls r1, 3
+ adds r1, r0
+ movs r2, 0x1C
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080DFBC8
+ ldrb r0, [r4]
+ ldr r1, _080DFBE0 @ =gUnknown_2024018
+ ldr r1, [r1]
+ ldr r2, [r1]
+ lsls r1, r0, 2
+ adds r1, r2
+ ldrh r1, [r1, 0x2]
+ bl SetBankEnemyShadowSpriteCallback
+_080DFBC8:
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080DFBCE:
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DFBD8: .4byte gBattleAnimAttacker
+_080DFBDC: .4byte gTasks
+_080DFBE0: .4byte gUnknown_2024018
+ thumb_func_end sub_80DF9BC
+
+ thumb_func_start c3_80DFBE4
+c3_80DFBE4: @ 80DFBE4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r4, _080DFC14 @ =gBattleAnimArgs
+ ldr r3, _080DFC18 @ =gSprites
+ ldr r2, _080DFC1C @ =gBattlerSpriteIds
+ ldr r1, _080DFC20 @ =gBattleAnimAttacker
+ ldrb r1, [r1]
+ adds r1, r2
+ ldrb r2, [r1]
+ lsls r1, r2, 4
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r3
+ adds r1, 0x3E
+ ldrb r1, [r1]
+ lsls r1, 29
+ lsrs r1, 31
+ strh r1, [r4, 0xE]
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DFC14: .4byte gBattleAnimArgs
+_080DFC18: .4byte gSprites
+_080DFC1C: .4byte gBattlerSpriteIds
+_080DFC20: .4byte gBattleAnimAttacker
+ thumb_func_end c3_80DFBE4
+
+ thumb_func_start sub_80DFC24
+sub_80DFC24: @ 80DFC24
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _080DFC48 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ ldr r1, _080DFC4C @ =gBattleAnimTarget
+ ldrb r1, [r1]
+ movs r2, 0x1
+ bl sub_8034BF4
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DFC48: .4byte gBattleAnimAttacker
+_080DFC4C: .4byte gBattleAnimTarget
+ thumb_func_end sub_80DFC24
+
+ thumb_func_start sub_80DFC50
+sub_80DFC50: @ 80DFC50
+ push {r4,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080DFC78 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r2, r1, 0
+ cmp r0, 0x4
+ bls _080DFC6E
+ b _080DFECA
+_080DFC6E:
+ lsls r0, 2
+ ldr r1, _080DFC7C @ =_080DFC80
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080DFC78: .4byte gTasks
+_080DFC7C: .4byte _080DFC80
+ .align 2, 0
+_080DFC80:
+ .4byte _080DFC94
+ .4byte _080DFD90
+ .4byte _080DFDE0
+ .4byte _080DFE4A
+ .4byte _080DFE7E
+_080DFC94:
+ ldr r1, _080DFD18 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DFCCE
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080DFCCE:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080DFD1C @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap
+ bl sub_807543C
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080DFD20 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080DFD24 @ =gFile_graphics_battle_anims_masks_morning_sun_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DFD30
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+ ldr r1, _080DFD28 @ =gBattle_BG1_X
+ ldr r3, _080DFD2C @ =0x0000ffc8
+ b _080DFD58
+ .align 2, 0
+_080DFD18: .4byte 0x00003f42
+_080DFD1C: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap
+_080DFD20: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet
+_080DFD24: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette
+_080DFD28: .4byte gBattle_BG1_X
+_080DFD2C: .4byte 0x0000ffc8
+_080DFD30:
+ ldr r0, _080DFD48 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080DFD54
+ ldr r1, _080DFD4C @ =gBattle_BG1_X
+ ldr r2, _080DFD50 @ =0x0000ff79
+ adds r0, r2, 0
+ b _080DFD5A
+ .align 2, 0
+_080DFD48: .4byte gBattleAnimAttacker
+_080DFD4C: .4byte gBattle_BG1_X
+_080DFD50: .4byte 0x0000ff79
+_080DFD54:
+ ldr r1, _080DFD80 @ =gBattle_BG1_X
+ ldr r3, _080DFD84 @ =0x0000fff6
+_080DFD58:
+ adds r0, r3, 0
+_080DFD5A:
+ strh r0, [r1]
+ ldr r1, _080DFD88 @ =gBattle_BG1_Y
+ movs r0, 0
+ strh r0, [r1]
+ ldr r0, _080DFD8C @ =gTasks
+ lsls r1, r4, 2
+ adds r1, r4
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080DFD80 @ =gBattle_BG1_X
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1C]
+ ldr r0, _080DFD88 @ =gBattle_BG1_Y
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1E]
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ b _080DFE66
+ .align 2, 0
+_080DFD80: .4byte gBattle_BG1_X
+_080DFD84: .4byte 0x0000fff6
+_080DFD88: .4byte gBattle_BG1_Y
+_080DFD8C: .4byte gTasks
+_080DFD90:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0x10]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x10]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _080DFDA6
+ b _080DFECA
+_080DFDA6:
+ movs r0, 0
+ strh r0, [r4, 0x10]
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _080DFDBC
+ movs r0, 0xC
+ strh r0, [r4, 0xA]
+_080DFDBC:
+ ldrh r0, [r4, 0xA]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xC
+ bne _080DFECA
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080DFECA
+_080DFDE0:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r4, r0, r2
+ ldrh r0, [r4, 0xA]
+ subs r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080DFDF8
+ movs r0, 0
+ strh r0, [r4, 0xA]
+_080DFDF8:
+ ldrh r0, [r4, 0xA]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _080DFECA
+ ldr r2, _080DFE3C @ =gBattle_BG1_X
+ ldr r1, _080DFE40 @ =gUnknown_83FF240
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ ldrh r1, [r4, 0x1C]
+ adds r0, r1
+ strh r0, [r2]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080DFE44
+ strh r0, [r4, 0x8]
+ b _080DFECA
+ .align 2, 0
+_080DFE3C: .4byte gBattle_BG1_X
+_080DFE40: .4byte gUnknown_83FF240
+_080DFE44:
+ movs r0, 0x3
+ strh r0, [r4, 0x8]
+ b _080DFECA
+_080DFE4A:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r2
+ ldrh r0, [r1, 0xE]
+ adds r0, 0x1
+ strh r0, [r1, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080DFECA
+ movs r0, 0
+ strh r0, [r1, 0xE]
+ movs r0, 0x1
+_080DFE66:
+ strh r0, [r1, 0x8]
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xDD
+ bl PlaySE12WithPanning
+ b _080DFECA
+_080DFE7E:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ bl sub_8075358
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080DFEA0
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080DFEA0:
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ ldr r0, _080DFED4 @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080DFED8 @ =gBattle_BG1_Y
+ strh r1, [r0]
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080DFECA:
+ add sp, 0x10
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080DFED4: .4byte gBattle_BG1_X
+_080DFED8: .4byte gBattle_BG1_Y
+ thumb_func_end sub_80DFC50
+
+ thumb_func_start sub_80DFEDC
+sub_80DFEDC: @ 80DFEDC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r7, r0, 0
+ bl Random
+ lsls r0, 16
+ movs r1, 0xFC
+ lsls r1, 14
+ ands r1, r0
+ lsrs r5, r1, 16
+ adds r1, r5, 0
+ cmp r1, 0x1F
+ ble _080DFF06
+ movs r0, 0x20
+ subs r0, r1
+ lsls r0, 16
+ lsrs r5, r0, 16
+_080DFF06:
+ ldr r4, _080E0000 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r5
+ strh r0, [r7, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x20
+ strh r0, [r7, 0x22]
+ ldr r1, _080E0004 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r7, 0x30]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r7, 0x32]
+ ldr r4, _080E0008 @ =gUnknown_83FF26C
+ movs r0, 0x20
+ ldrsh r1, [r7, r0]
+ movs r0, 0x22
+ ldrsh r2, [r7, r0]
+ adds r5, r7, 0
+ adds r5, 0x43
+ ldrb r3, [r5]
+ adds r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ bl CreateSprite
+ mov r9, r0
+ mov r1, r9
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ movs r0, 0x20
+ ldrsh r1, [r7, r0]
+ movs r0, 0x22
+ ldrsh r2, [r7, r0]
+ ldrb r3, [r5]
+ adds r3, 0x1
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ bl CreateSprite
+ mov r8, r0
+ mov r1, r8
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ mov r0, r9
+ lsls r2, r0, 4
+ add r2, r9
+ lsls r2, 2
+ ldr r1, _080E000C @ =gSprites
+ mov r10, r1
+ adds r5, r2, r1
+ adds r0, r5, 0
+ movs r1, 0x1
+ str r2, [sp]
+ bl StartSpriteAnim
+ mov r0, r8
+ lsls r6, r0, 4
+ add r6, r8
+ lsls r6, 2
+ mov r1, r10
+ adds r4, r6, r1
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl StartSpriteAnim
+ ldr r1, _080E0004 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r5, 0x30]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x32]
+ ldrh r0, [r1]
+ strh r0, [r4, 0x30]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x32]
+ ldr r0, _080E0010 @ =0x0000ffff
+ strh r0, [r5, 0x3C]
+ movs r0, 0x1
+ negs r0, r0
+ strh r0, [r4, 0x3C]
+ adds r5, 0x3E
+ ldrb r0, [r5]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r5]
+ adds r4, 0x3E
+ ldrb r0, [r4]
+ orrs r0, r1
+ strb r0, [r4]
+ movs r0, 0x1C
+ add r10, r0
+ ldr r2, [sp]
+ add r2, r10
+ ldr r0, _080E0014 @ =sub_80E0128
+ str r0, [r2]
+ add r6, r10
+ str r0, [r6]
+ mov r1, r9
+ strh r1, [r7, 0x3A]
+ mov r0, r8
+ strh r0, [r7, 0x3C]
+ ldr r0, _080E0018 @ =sub_80E001C
+ str r0, [r7, 0x1C]
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0000: .4byte gBattleAnimAttacker
+_080E0004: .4byte gBattleAnimArgs
+_080E0008: .4byte gUnknown_83FF26C
+_080E000C: .4byte gSprites
+_080E0010: .4byte 0x0000ffff
+_080E0014: .4byte sub_80E0128
+_080E0018: .4byte sub_80E001C
+ thumb_func_end sub_80DFEDC
+
+ thumb_func_start sub_80E001C
+sub_80E001C: @ 80E001C
+ push {lr}
+ adds r3, r0, 0
+ ldrh r2, [r3, 0x32]
+ ldrh r0, [r3, 0x34]
+ adds r2, r0
+ lsls r0, r2, 16
+ asrs r0, 24
+ ldrh r1, [r3, 0x26]
+ subs r1, r0
+ strh r1, [r3, 0x26]
+ movs r0, 0xFF
+ ands r2, r0
+ strh r2, [r3, 0x34]
+ movs r2, 0x36
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _080E006A
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r1, 0x8
+ negs r1, r1
+ cmp r0, r1
+ bge _080E006A
+ ldr r2, _080E00C4 @ =gSprites
+ movs r0, 0x3A
+ ldrsh r1, [r3, 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]
+ ldrh r0, [r3, 0x36]
+ adds r0, 0x1
+ strh r0, [r3, 0x36]
+_080E006A:
+ movs r1, 0x36
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x1
+ bne _080E009E
+ movs r2, 0x26
+ ldrsh r1, [r3, r2]
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _080E009E
+ ldr r2, _080E00C4 @ =gSprites
+ movs r0, 0x3C
+ ldrsh r1, [r3, 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]
+ ldrh r0, [r3, 0x36]
+ adds r0, 0x1
+ strh r0, [r3, 0x36]
+_080E009E:
+ ldrh r0, [r3, 0x30]
+ subs r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080E00C0
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080E00C8 @ =sub_80E00CC
+ str r0, [r3, 0x1C]
+_080E00C0:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E00C4: .4byte gSprites
+_080E00C8: .4byte sub_80E00CC
+ thumb_func_end sub_80E001C
+
+ thumb_func_start sub_80E00CC
+sub_80E00CC: @ 80E00CC
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r5, _080E0120 @ =gSprites
+ movs r0, 0x3A
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r3, r0, 2
+ adds r6, r5, 0
+ adds r6, 0x1C
+ adds r0, r3, r6
+ ldr r2, [r0]
+ ldr r0, _080E0124 @ =SpriteCallbackDummy
+ cmp r2, r0
+ bne _080E0118
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r6
+ ldr r0, [r1]
+ cmp r0, r2
+ bne _080E0118
+ adds r0, r3, r5
+ bl DestroySprite
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ bl DestroySprite
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0118:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0120: .4byte gSprites
+_080E0124: .4byte SpriteCallbackDummy
+ thumb_func_end sub_80E00CC
+
+ thumb_func_start sub_80E0128
+sub_80E0128: @ 80E0128
+ push {lr}
+ adds r3, r0, 0
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ ldrb r1, [r0]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ bne _080E0174
+ ldrh r2, [r3, 0x32]
+ ldrh r1, [r3, 0x34]
+ adds r2, r1
+ lsls r1, r2, 16
+ asrs r1, 24
+ ldrh r0, [r3, 0x26]
+ subs r0, r1
+ strh r0, [r3, 0x26]
+ movs r0, 0xFF
+ ands r2, r0
+ strh r2, [r3, 0x34]
+ ldrh r0, [r3, 0x30]
+ subs r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080E0174
+ mov r1, r12
+ ldrb r0, [r1]
+ movs r1, 0x4
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldr r0, _080E0178 @ =SpriteCallbackDummy
+ str r0, [r3, 0x1C]
+_080E0174:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0178: .4byte SpriteCallbackDummy
+ thumb_func_end sub_80E0128
+
+ thumb_func_start sub_80E017C
+sub_80E017C: @ 80E017C
+ push {r4-r6,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _080E01A4 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r4, r1, 0
+ cmp r0, 0x5
+ bls _080E019A
+ b _080E0476
+_080E019A:
+ lsls r0, 2
+ ldr r1, _080E01A8 @ =_080E01AC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E01A4: .4byte gTasks
+_080E01A8: .4byte _080E01AC
+ .align 2, 0
+_080E01AC:
+ .4byte _080E01C4
+ .4byte _080E0304
+ .4byte _080E038C
+ .4byte _080E03C2
+ .4byte _080E03F0
+ .4byte _080E042A
+_080E01C4:
+ ldr r1, _080E0248 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r1, _080E024C @ =0x00000d03
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0
+ bl SetAnimBgAttribute
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E01FC
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+_080E01FC:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080E0250 @ =gFile_graphics_battle_anims_masks_morning_sun_tilemap
+ bl sub_807543C
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ ldr r1, _080E0254 @ =gFile_graphics_battle_anims_masks_morning_sun_sheet
+ mov r2, sp
+ ldrh r2, [r2, 0xA]
+ bl sub_80753B4
+ ldr r0, _080E0258 @ =gFile_graphics_battle_anims_masks_morning_sun_palette
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E0264
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80730C0
+ ldr r1, _080E025C @ =gBattle_BG1_X
+ ldr r3, _080E0260 @ =0x0000ffc8
+ adds r0, r3, 0
+ b _080E02CE
+ .align 2, 0
+_080E0248: .4byte 0x00003f42
+_080E024C: .4byte 0x00000d03
+_080E0250: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap
+_080E0254: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet
+_080E0258: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette
+_080E025C: .4byte gBattle_BG1_X
+_080E0260: .4byte 0x0000ffc8
+_080E0264:
+ ldr r0, _080E02A4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerPosition
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_8075290
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E02B8
+ ldr r1, _080E02A8 @ =gBattle_BG1_X
+ cmp r4, 0x1
+ bne _080E0288
+ ldr r2, _080E02AC @ =0x0000ff65
+ adds r0, r2, 0
+ strh r0, [r1]
+_080E0288:
+ cmp r4, 0x3
+ bne _080E0292
+ ldr r3, _080E02B0 @ =0x0000ff8d
+ adds r0, r3, 0
+ strh r0, [r1]
+_080E0292:
+ cmp r4, 0
+ bne _080E029A
+ movs r0, 0xE
+ strh r0, [r1]
+_080E029A:
+ cmp r4, 0x2
+ bne _080E02D0
+ ldr r1, _080E02A8 @ =gBattle_BG1_X
+ ldr r2, _080E02B4 @ =0x0000ffec
+ b _080E02CC
+ .align 2, 0
+_080E02A4: .4byte gBattleAnimTarget
+_080E02A8: .4byte gBattle_BG1_X
+_080E02AC: .4byte 0x0000ff65
+_080E02B0: .4byte 0x0000ff8d
+_080E02B4: .4byte 0x0000ffec
+_080E02B8:
+ cmp r4, 0x1
+ bne _080E02C4
+ ldr r1, _080E02F0 @ =gBattle_BG1_X
+ ldr r3, _080E02F4 @ =0x0000ff79
+ adds r0, r3, 0
+ strh r0, [r1]
+_080E02C4:
+ cmp r4, 0
+ bne _080E02D0
+ ldr r1, _080E02F0 @ =gBattle_BG1_X
+ ldr r2, _080E02F8 @ =0x0000fff6
+_080E02CC:
+ adds r0, r2, 0
+_080E02CE:
+ strh r0, [r1]
+_080E02D0:
+ ldr r1, _080E02FC @ =gBattle_BG1_Y
+ movs r0, 0
+ strh r0, [r1]
+ ldr r0, _080E0300 @ =gTasks
+ lsls r1, r6, 2
+ adds r1, r6
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _080E02F0 @ =gBattle_BG1_X
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1C]
+ ldr r0, _080E02FC @ =gBattle_BG1_Y
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1E]
+ b _080E0384
+ .align 2, 0
+_080E02F0: .4byte gBattle_BG1_X
+_080E02F4: .4byte 0x0000ff79
+_080E02F8: .4byte 0x0000fff6
+_080E02FC: .4byte gBattle_BG1_Y
+_080E0300: .4byte gTasks
+_080E0304:
+ ldr r1, _080E0338 @ =gTasks
+ lsls r4, r6, 2
+ adds r0, r4, r6
+ lsls r0, 3
+ adds r5, r0, r1
+ movs r0, 0
+ strh r0, [r5, 0xE]
+ ldr r0, _080E033C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E0348
+ ldr r2, _080E0340 @ =gBattle_BG1_X
+ ldr r1, _080E0344 @ =gUnknown_83FF284
+ movs r3, 0xC
+ ldrsh r0, [r5, r3]
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ ldrh r5, [r5, 0x1C]
+ adds r0, r5
+ b _080E035A
+ .align 2, 0
+_080E0338: .4byte gTasks
+_080E033C: .4byte gBattleAnimTarget
+_080E0340: .4byte gBattle_BG1_X
+_080E0344: .4byte gUnknown_83FF284
+_080E0348:
+ ldr r2, _080E0378 @ =gBattle_BG1_X
+ ldr r1, _080E037C @ =gUnknown_83FF284
+ movs r3, 0xC
+ ldrsh r0, [r5, r3]
+ adds r0, r1
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ ldrh r0, [r5, 0x1C]
+ subs r0, r1
+_080E035A:
+ strh r0, [r2]
+ ldr r0, _080E0380 @ =gTasks
+ adds r1, r4, r6
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0xC]
+ adds r0, 0x1
+ strh r0, [r1, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080E0384
+ strh r0, [r1, 0x8]
+ b _080E0476
+ .align 2, 0
+_080E0378: .4byte gBattle_BG1_X
+_080E037C: .4byte gUnknown_83FF284
+_080E0380: .4byte gTasks
+_080E0384:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _080E0476
+_080E038C:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r4
+ ldrh r0, [r4, 0xA]
+ subs r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bgt _080E03A6
+ movs r0, 0x5
+ strh r0, [r4, 0xA]
+_080E03A6:
+ ldrh r1, [r4, 0xA]
+ lsls r1, 8
+ movs r0, 0x3
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bne _080E0476
+ b _080E03E2
+_080E03C2:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r4
+ ldrh r1, [r4, 0xE]
+ adds r1, 0x1
+ strh r1, [r4, 0xE]
+ lsls r1, 16
+ asrs r1, 16
+ ldr r2, _080E03EC @ =gUnknown_83FF288
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r1, r0
+ ble _080E0476
+_080E03E2:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E0476
+ .align 2, 0
+_080E03EC: .4byte gUnknown_83FF288
+_080E03F0:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r4
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ ble _080E040A
+ movs r0, 0xD
+ strh r0, [r4, 0xA]
+_080E040A:
+ ldrh r1, [r4, 0xA]
+ lsls r1, 8
+ movs r0, 0x3
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xD
+ bne _080E0476
+ movs r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E0476
+_080E042A:
+ mov r0, sp
+ bl sub_80752A0
+ mov r0, sp
+ ldrb r0, [r0, 0x9]
+ bl sub_8075358
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E044C
+ movs r0, 0x1
+ movs r1, 0x3
+ movs r2, 0
+ bl SetAnimBgAttribute
+_080E044C:
+ movs r0, 0x1
+ movs r1, 0x4
+ movs r2, 0x1
+ bl SetAnimBgAttribute
+ ldr r0, _080E0480 @ =gBattle_BG1_X
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _080E0484 @ =gBattle_BG1_Y
+ strh r1, [r0]
+ movs r0, 0x50
+ movs r1, 0
+ bl SetGpuReg
+ movs r0, 0x52
+ movs r1, 0
+ bl SetGpuReg
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080E0476:
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0480: .4byte gBattle_BG1_X
+_080E0484: .4byte gBattle_BG1_Y
+ thumb_func_end sub_80E017C
+
+ thumb_func_start sub_80E0488
+sub_80E0488: @ 80E0488
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _080E04C0 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E04C8
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080E04C4 @ =gUnknown_83FF290
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E04DA
+ .align 2, 0
+_080E04C0: .4byte gTasks
+_080E04C4: .4byte gUnknown_83FF290
+_080E04C8:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E04DA
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080E04DA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E0488
+
+ thumb_func_start sub_80E04E0
+sub_80E04E0: @ 80E04E0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ bne _080E04FE
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8075160
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080E0552
+_080E04FE:
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ cmp r1, 0x14
+ ble _080E0552
+ ldrh r0, [r4, 0x30]
+ adds r0, 0xA0
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x80
+ strh r0, [r4, 0x32]
+ ldr r0, _080E052C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E0530
+ ldrh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ negs r0, r0
+ b _080E0536
+ .align 2, 0
+_080E052C: .4byte gBattleAnimAttacker
+_080E0530:
+ ldrh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+_080E0536:
+ strh r0, [r4, 0x24]
+ ldrh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x26]
+ adds r0, r1
+ strh r0, [r4, 0x26]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x40
+ ble _080E0552
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0552:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E04E0
+
+ thumb_func_start sub_80E0558
+sub_80E0558: @ 80E0558
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080E057C @ =gTasks
+ adds r4, r0, r1
+ ldr r5, _080E0580 @ =gBattleAnimArgs
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080E0584
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ b _080E0618
+ .align 2, 0
+_080E057C: .4byte gTasks
+_080E0580: .4byte gBattleAnimArgs
+_080E0584:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bge _080E0590
+ movs r0, 0
+ strh r0, [r5, 0x4]
+_080E0590:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x2
+ ble _080E059C
+ movs r0, 0x2
+ strh r0, [r5, 0x4]
+_080E059C:
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ movs r0, 0x4
+ ldrsh r1, [r5, r0]
+ lsls r1, 1
+ movs r0, 0x8
+ subs r0, r1
+ strh r0, [r4, 0xE]
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ lsls r0, 7
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1
+ strh r0, [r4, 0x10]
+ ldrh r0, [r5, 0x4]
+ adds r0, 0x2
+ strh r0, [r4, 0x12]
+ ldrh r0, [r5, 0x2]
+ subs r0, 0x1
+ strh r0, [r4, 0x14]
+ ldrb r0, [r5]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080E05E8
+ ldr r0, _080E05E4 @ =gBattleAnimAttacker
+ b _080E05EA
+ .align 2, 0
+_080E05E4: .4byte gBattleAnimAttacker
+_080E05E8:
+ ldr r0, _080E0620 @ =gBattleAnimTarget
+_080E05EA:
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E0608
+ movs r1, 0x10
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4, 0x10]
+ movs r1, 0x12
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4, 0x12]
+_080E0608:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl sub_80758E0
+ ldr r0, _080E0624 @ =sub_80E0628
+ str r0, [r4]
+_080E0618:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0620: .4byte gBattleAnimTarget
+_080E0624: .4byte sub_80E0628
+ thumb_func_end sub_80E0558
+
+ thumb_func_start sub_80E0628
+sub_80E0628: @ 80E0628
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080E064C @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r6, [r4, r0]
+ cmp r6, 0x1
+ beq _080E06B0
+ cmp r6, 0x1
+ bgt _080E0650
+ cmp r6, 0
+ beq _080E065C
+ b _080E0788
+ .align 2, 0
+_080E064C: .4byte gTasks
+_080E0650:
+ cmp r6, 0x2
+ beq _080E0708
+ cmp r6, 0x3
+ bne _080E065A
+ b _080E0778
+_080E065A:
+ b _080E0788
+_080E065C:
+ ldr r2, _080E06AC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x12]
+ ldrh r2, [r0, 0x24]
+ adds r1, r2
+ strh r1, [r0, 0x24]
+ ldrh r0, [r4, 0xC]
+ ldrh r1, [r4, 0x10]
+ subs r0, r1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0xC]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _080E0788
+ strh r6, [r4, 0xA]
+ b _080E0770
+ .align 2, 0
+_080E06AC: .4byte gSprites
+_080E06B0:
+ ldr r2, _080E0704 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r0, 0x24]
+ ldrh r2, [r4, 0x12]
+ subs r1, r2
+ strh r1, [r0, 0x24]
+ ldrh r0, [r4, 0x10]
+ ldrh r1, [r4, 0xC]
+ adds r0, r1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0xC]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldrh r1, [r4, 0xA]
+ adds r1, 0x1
+ strh r1, [r4, 0xA]
+ lsls r1, 16
+ asrs r1, 16
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ lsls r0, 1
+ cmp r1, r0
+ blt _080E0788
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _080E0770
+ .align 2, 0
+_080E0704: .4byte gSprites
+_080E0708:
+ ldr r2, _080E076C @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r4, 0x12]
+ ldrh r2, [r0, 0x24]
+ adds r1, r2
+ movs r5, 0
+ strh r1, [r0, 0x24]
+ ldrh r0, [r4, 0xC]
+ ldrh r1, [r4, 0x10]
+ subs r0, r1
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r4, 0xC]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0xE
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ blt _080E0788
+ ldrh r1, [r4, 0x14]
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _080E0770
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x14]
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0x8]
+ b _080E0788
+ .align 2, 0
+_080E076C: .4byte gSprites
+_080E0770:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E0788
+_080E0778:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8075980
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080E0788:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E0628
+
+ thumb_func_start sub_80E0790
+sub_80E0790: @ 80E0790
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080E07AC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _080E07B4
+ strh r0, [r4, 0x20]
+ ldr r1, _080E07B0 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ b _080E07BE
+ .align 2, 0
+_080E07AC: .4byte gBattleAnimAttacker
+_080E07B0: .4byte gBattleAnimArgs
+_080E07B4:
+ movs r0, 0xF0
+ strh r0, [r4, 0x20]
+ ldr r1, _080E07D8 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ subs r0, 0x1E
+_080E07BE:
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x32]
+ ldrb r1, [r1, 0x2]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r0, _080E07DC @ =sub_80E07E0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E07D8: .4byte gBattleAnimArgs
+_080E07DC: .4byte sub_80E07E0
+ thumb_func_end sub_80E0790
+
+ thumb_func_start sub_80E07E0
+sub_80E07E0: @ 80E07E0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x3
+ strh r0, [r4, 0x2E]
+ ldr r0, _080E0820 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E0824
+ ldrh r1, [r4, 0x20]
+ adds r1, 0x5
+ strh r1, [r4, 0x20]
+ ldrh r0, [r4, 0x22]
+ subs r0, 0x1
+ strh r0, [r4, 0x22]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0xF0
+ ble _080E0812
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0812:
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0xFF
+ ands r0, r1
+ movs r1, 0x10
+ bl Sin
+ b _080E0848
+ .align 2, 0
+_080E0820: .4byte gBattleAnimAttacker
+_080E0824:
+ ldrh r1, [r4, 0x20]
+ subs r1, 0x5
+ strh r1, [r4, 0x20]
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x1
+ strh r0, [r4, 0x22]
+ lsls r1, 16
+ cmp r1, 0
+ bge _080E083C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E083C:
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0xFF
+ ands r0, r1
+ movs r1, 0x10
+ bl Cos
+_080E0848:
+ strh r0, [r4, 0x26]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E07E0
+
+ thumb_func_start sub_80E0850
+sub_80E0850: @ 80E0850
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080E0898 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ strh r0, [r4, 0xE]
+ movs r0, 0x20
+ strh r0, [r4, 0x20]
+ movs r0, 0x40
+ strh r0, [r4, 0x22]
+ movs r0, 0x80
+ lsls r0, 4
+ strh r0, [r4, 0x24]
+ ldr r0, _080E089C @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ movs r1, 0
+ bl sub_80758E0
+ ldr r0, _080E08A0 @ =sub_80E08A4
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0898: .4byte gTasks
+_080E089C: .4byte gBattleAnimArgs
+_080E08A0: .4byte sub_80E08A4
+ thumb_func_end sub_80E0850
+
+ thumb_func_start sub_80E08A4
+sub_80E08A4: @ 80E08A4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080E08D0 @ =gTasks
+ adds r7, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r7, r1]
+ mov r8, r0
+ cmp r0, 0x1
+ beq _080E0940
+ cmp r0, 0x1
+ bgt _080E08D4
+ cmp r0, 0
+ beq _080E08DC
+ b _080E09BA
+ .align 2, 0
+_080E08D0: .4byte gTasks
+_080E08D4:
+ mov r2, r8
+ cmp r2, 0x2
+ beq _080E09A8
+ b _080E09BA
+_080E08DC:
+ movs r3, 0x80
+ lsls r3, 2
+ adds r0, r3, 0
+ ldrh r1, [r7, 0xC]
+ adds r2, r0, r1
+ strh r2, [r7, 0xC]
+ lsls r0, r2, 16
+ asrs r0, 16
+ ldrh r3, [r7, 0x24]
+ mov r8, r3
+ movs r3, 0x24
+ ldrsh r1, [r7, r3]
+ cmp r0, r1
+ blt _080E09BA
+ mov r0, r8
+ subs r5, r0, r2
+ lsls r5, 16
+ asrs r5, 16
+ adds r6, r1, 0
+ lsls r6, 1
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl __divsi3
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r5, 0
+ adds r1, r6, 0
+ bl __modsi3
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r4, 16
+ asrs r4, 16
+ movs r1, 0x1
+ ands r4, r1
+ cmp r4, 0
+ bne _080E0934
+ lsls r0, 16
+ asrs r0, 16
+ mov r2, r8
+ subs r0, r2, r0
+ b _080E0992
+_080E0934:
+ lsls r0, 16
+ asrs r0, 16
+ mov r3, r8
+ subs r0, r3
+ strh r0, [r7, 0xC]
+ b _080E09BA
+_080E0940:
+ ldr r1, _080E0998 @ =0xfffffe00
+ adds r0, r1, 0
+ ldrh r2, [r7, 0xC]
+ adds r1, r0, r2
+ strh r1, [r7, 0xC]
+ movs r3, 0xC
+ ldrsh r0, [r7, r3]
+ movs r2, 0x24
+ ldrsh r6, [r7, r2]
+ cmn r0, r6
+ bgt _080E09BA
+ ldrh r3, [r7, 0x24]
+ mov r9, r3
+ mov r0, r9
+ subs r4, r0, r1
+ lsls r4, 16
+ asrs r4, 16
+ lsls r6, 1
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl __divsi3
+ adds r5, r0, 0
+ lsls r5, 16
+ lsrs r5, 16
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl __modsi3
+ lsls r0, 16
+ lsrs r2, r0, 16
+ mov r1, r8
+ ands r1, r5
+ lsls r0, r1, 16
+ asrs r1, r0, 16
+ cmp r1, 0
+ bne _080E099C
+ lsls r0, r2, 16
+ asrs r0, 16
+ mov r2, r9
+ subs r0, r2
+_080E0992:
+ strh r0, [r7, 0xC]
+ strh r1, [r7, 0x8]
+ b _080E09BA
+ .align 2, 0
+_080E0998: .4byte 0xfffffe00
+_080E099C:
+ lsls r0, r2, 16
+ asrs r0, 16
+ mov r3, r9
+ subs r0, r3, r0
+ strh r0, [r7, 0xC]
+ b _080E09BA
+_080E09A8:
+ ldrh r0, [r7, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8075980
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _080E0A30
+_080E09BA:
+ ldrh r0, [r7, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0x80
+ lsls r2, 1
+ ldrh r3, [r7, 0xC]
+ adds r1, r2, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r7, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_80759DC
+ ldr r2, _080E0A28 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r2
+ movs r2, 0xC
+ ldrsh r0, [r7, r2]
+ cmp r0, 0
+ bge _080E09EE
+ adds r0, 0x3F
+_080E09EE:
+ asrs r0, 6
+ negs r0, r0
+ strh r0, [r1, 0x24]
+ ldrh r0, [r7, 0xA]
+ adds r0, 0x1
+ strh r0, [r7, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080E0A30
+ ldrh r1, [r7, 0x20]
+ movs r3, 0x20
+ ldrsh r0, [r7, r3]
+ cmp r0, 0
+ beq _080E0A2C
+ subs r0, r1, 0x1
+ strh r0, [r7, 0x20]
+ ldrh r0, [r7, 0x24]
+ ldrh r1, [r7, 0x22]
+ subs r0, r1
+ strh r0, [r7, 0x24]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bgt _080E0A30
+ movs r0, 0x10
+ strh r0, [r7, 0x24]
+ b _080E0A30
+ .align 2, 0
+_080E0A28: .4byte gSprites
+_080E0A2C:
+ movs r0, 0x2
+ strh r0, [r7, 0x8]
+_080E0A30:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E08A4
+
+ thumb_func_start sub_80E0A3C
+sub_80E0A3C: @ 80E0A3C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080E0A9C
+ ldr r6, _080E0A94 @ =gBattleAnimArgs
+ movs r2, 0x4
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ bne _080E0A70
+ ldr r4, _080E0A98 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+_080E0A70:
+ ldrh r0, [r6]
+ ldrh r1, [r5, 0x20]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrh r1, [r6, 0x2]
+ ldrh r2, [r5, 0x22]
+ adds r0, r1, r2
+ strh r0, [r5, 0x22]
+ movs r0, 0x80
+ strh r0, [r5, 0x30]
+ movs r0, 0xC0
+ lsls r0, 2
+ strh r0, [r5, 0x32]
+ strh r1, [r5, 0x34]
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _080E0AFA
+ .align 2, 0
+_080E0A94: .4byte gBattleAnimArgs
+_080E0A98: .4byte gBattleAnimAttacker
+_080E0A9C:
+ ldrh r1, [r5, 0x30]
+ lsls r0, r1, 16
+ asrs r0, 24
+ strh r0, [r5, 0x24]
+ ldrh r0, [r5, 0x32]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r2, [r5, 0x26]
+ adds r0, r2
+ strh r0, [r5, 0x26]
+ movs r2, 0x36
+ ldrsh r0, [r5, r2]
+ adds r4, r1, 0
+ cmp r0, 0
+ bne _080E0ADA
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ movs r2, 0x34
+ ldrsh r0, [r5, r2]
+ cmn r1, r0
+ ble _080E0ADA
+ movs r0, 0x1
+ strh r0, [r5, 0x36]
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+ movs r1, 0x3
+ bl __divsi3
+ lsls r0, 1
+ strh r0, [r5, 0x32]
+_080E0ADA:
+ adds r0, r4, 0
+ adds r0, 0xC0
+ strh r0, [r5, 0x30]
+ ldrh r0, [r5, 0x32]
+ adds r0, 0x80
+ strh r0, [r5, 0x32]
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080E0AFA
+ adds r0, r5, 0
+ bl DestroyAnimSprite
+_080E0AFA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E0A3C
+
+ thumb_func_start sub_80E0B00
+sub_80E0B00: @ 80E0B00
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r7, r0, 0
+ ldr r1, _080E0B30 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r2, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bne _080E0C0C
+ ldr r0, _080E0B34 @ =gBattleAnimArgs
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ mov r8, r0
+ cmp r1, 0
+ bne _080E0B3C
+ ldr r0, _080E0B38 @ =gBattleAnimAttacker
+ b _080E0B3E
+ .align 2, 0
+_080E0B30: .4byte gTasks
+_080E0B34: .4byte gBattleAnimArgs
+_080E0B38: .4byte gBattleAnimAttacker
+_080E0B3C:
+ ldr r0, _080E0B78 @ =gBattleAnimTarget
+_080E0B3E:
+ ldrb r0, [r0]
+ strh r0, [r2, 0x1E]
+ mov r1, r8
+ ldrb r0, [r1]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080E0B7C @ =gTasks
+ lsls r4, r7, 2
+ adds r0, r4, r7
+ lsls r0, 3
+ adds r6, r0, r1
+ strh r5, [r6, 0x1C]
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80758E0
+ mov r2, r8
+ movs r3, 0x2
+ ldrsh r0, [r2, r3]
+ cmp r0, 0x1
+ beq _080E0BA0
+ cmp r0, 0x1
+ bgt _080E0B80
+ cmp r0, 0
+ beq _080E0B88
+ lsls r2, r5, 4
+ b _080E0BE8
+ .align 2, 0
+_080E0B78: .4byte gBattleAnimTarget
+_080E0B7C: .4byte gTasks
+_080E0B80:
+ cmp r0, 0x2
+ beq _080E0BAA
+ lsls r2, r5, 4
+ b _080E0BE8
+_080E0B88:
+ movs r2, 0xA0
+ lsls r2, 1
+ adds r0, r5, 0
+ movs r1, 0xE0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ adds r0, r5, 0
+ bl sub_8076440
+ lsls r2, r5, 4
+ b _080E0BE8
+_080E0BA0:
+ movs r2, 0x98
+ lsls r2, 1
+ movs r3, 0xF0
+ lsls r3, 4
+ b _080E0BB2
+_080E0BAA:
+ movs r2, 0x98
+ lsls r2, 1
+ movs r3, 0xF1
+ lsls r3, 8
+_080E0BB2:
+ adds r0, r5, 0
+ movs r1, 0xD0
+ bl obj_id_set_rotscale
+ adds r0, r5, 0
+ bl sub_8076440
+ bl sub_8073788
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E0BD8
+ ldrb r0, [r6, 0x1E]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsls r2, r5, 4
+ cmp r0, 0
+ bne _080E0BE8
+_080E0BD8:
+ ldr r0, _080E0C04 @ =gSprites
+ lsls r2, r5, 4
+ adds r1, r2, r5
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x10
+ strh r0, [r1, 0x26]
+_080E0BE8:
+ ldr r1, _080E0C04 @ =gSprites
+ adds r0, r2, r5
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0x2
+ strh r1, [r0, 0x24]
+ ldr r0, _080E0C08 @ =gTasks
+ adds r1, r4, r7
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _080E0C58
+ .align 2, 0
+_080E0C04: .4byte gSprites
+_080E0C08: .4byte gTasks
+_080E0C0C:
+ ldrb r5, [r2, 0x1C]
+ ldrh r0, [r2, 0xC]
+ adds r0, 0x1
+ movs r4, 0
+ strh r0, [r2, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080E0C30
+ strh r4, [r2, 0xC]
+ ldr r0, _080E0C64 @ =gSprites
+ lsls r1, r5, 4
+ adds r1, r5
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x24]
+ negs r0, r0
+ strh r0, [r1, 0x24]
+_080E0C30:
+ ldrh r0, [r2, 0xA]
+ adds r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ bne _080E0C58
+ adds r0, r5, 0
+ bl sub_8075980
+ ldr r1, _080E0C64 @ =gSprites
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r1
+ strh r4, [r0, 0x24]
+ strh r4, [r0, 0x26]
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080E0C58:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0C64: .4byte gSprites
+ thumb_func_end sub_80E0B00
+
+ thumb_func_start sub_80E0C68
+sub_80E0C68: @ 80E0C68
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xC
+ bl __umodsi3
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, r0
+ ldr r3, _080E0CB4 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080E0CB8 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ bl Random
+ ldr r5, _080E0CBC @ =0x000001ff
+ ands r5, r0
+ bl Random
+ movs r1, 0xFF
+ ands r1, r0
+ movs r0, 0x1
+ ands r0, r5
+ cmp r0, 0
+ beq _080E0CC0
+ movs r2, 0xBC
+ lsls r2, 3
+ adds r0, r5, r2
+ b _080E0CC8
+ .align 2, 0
+_080E0CB4: .4byte 0x000003ff
+_080E0CB8: .4byte 0xfffffc00
+_080E0CBC: .4byte 0x000001ff
+_080E0CC0:
+ movs r3, 0xBC
+ lsls r3, 3
+ adds r0, r3, 0
+ subs r0, r5
+_080E0CC8:
+ strh r0, [r4, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080E0CDA
+ movs r2, 0x90
+ lsls r2, 3
+ adds r0, r1, r2
+ b _080E0CE2
+_080E0CDA:
+ movs r3, 0x90
+ lsls r3, 3
+ adds r0, r3, 0
+ subs r0, r1
+_080E0CE2:
+ strh r0, [r4, 0x30]
+ ldr r0, _080E0CF4 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080E0CFC
+ ldr r0, _080E0CF8 @ =0x0000fff8
+ b _080E0CFE
+ .align 2, 0
+_080E0CF4: .4byte gBattleAnimArgs
+_080E0CF8: .4byte 0x0000fff8
+_080E0CFC:
+ movs r0, 0xF8
+_080E0CFE:
+ strh r0, [r4, 0x20]
+ movs r0, 0x68
+ strh r0, [r4, 0x22]
+ ldr r0, _080E0D10 @ =sub_80E0D14
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0D10: .4byte sub_80E0D14
+ thumb_func_end sub_80E0C68
+
+ thumb_func_start sub_80E0D14
+sub_80E0D14: @ 80E0D14
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E0D2C
+ ldrh r3, [r4, 0x2E]
+ lsls r0, r3, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ b _080E0D36
+_080E0D2C:
+ ldrh r3, [r4, 0x2E]
+ lsls r1, r3, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x24]
+ subs r0, r1
+_080E0D36:
+ strh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x30]
+ lsls r1, r2, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x26]
+ subs r0, r1
+ strh r0, [r4, 0x26]
+ adds r0, r3, 0
+ subs r0, 0x16
+ strh r0, [r4, 0x2E]
+ adds r1, r2, 0
+ subs r1, 0x30
+ strh r1, [r4, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080E0D5A
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+_080E0D5A:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _080E0D6E
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0D6E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E0D14
+
+ thumb_func_start sub_80E0D74
+sub_80E0D74: @ 80E0D74
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r1, _080E0DD8 @ =0x00001f3f
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r1, 0x80
+ lsls r1, 8
+ movs r0, 0
+ bl SetGpuRegBits
+ ldr r0, _080E0DDC @ =gUnknown_2022984
+ movs r1, 0
+ strh r1, [r0]
+ ldr r4, _080E0DE0 @ =gUnknown_2022986
+ strh r1, [r4]
+ movs r0, 0x40
+ movs r1, 0
+ bl SetGpuReg
+ ldrh r1, [r4]
+ movs r0, 0x44
+ bl SetGpuReg
+ ldr r0, _080E0DE4 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r5, 0x2E]
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8075114
+ ldrb r1, [r5, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r5, 0x1]
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _080E0DE8 @ =sub_80E0DEC
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0DD8: .4byte 0x00001f3f
+_080E0DDC: .4byte gUnknown_2022984
+_080E0DE0: .4byte gUnknown_2022986
+_080E0DE4: .4byte gBattleAnimArgs
+_080E0DE8: .4byte sub_80E0DEC
+ thumb_func_end sub_80E0D74
+
+ thumb_func_start sub_80E0DEC
+sub_80E0DEC: @ 80E0DEC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080E0E2A
+ cmp r0, 0x1
+ bgt _080E0E02
+ cmp r0, 0
+ beq _080E0E0C
+ b _080E0E8A
+_080E0E02:
+ cmp r0, 0x2
+ beq _080E0E40
+ cmp r0, 0x3
+ beq _080E0E62
+ b _080E0E8A
+_080E0E0C:
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080E0E8A
+ b _080E0E5A
+_080E0E2A:
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080E0E8A
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+ b _080E0E5A
+_080E0E40:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _080E0E8A
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080E0E5A:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ b _080E0E8A
+_080E0E62:
+ ldr r1, _080E0E90 @ =0x00003f3f
+ movs r0, 0x4A
+ bl SetGpuReg
+ movs r0, 0
+ bl GetGpuReg
+ adds r1, r0, 0
+ movs r2, 0x80
+ lsls r2, 8
+ adds r0, r2, 0
+ eors r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0
+ bl SetGpuReg
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0E8A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0E90: .4byte 0x00003f3f
+ thumb_func_end sub_80E0DEC
+
+ thumb_func_start sub_80E0E94
+sub_80E0E94: @ 80E0E94
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _080E0ED0 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ ldr r1, _080E0ED4 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x30]
+ ldr r1, _080E0ED8 @ =sub_80E0EDC
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0ED0: .4byte gBattleAnimAttacker
+_080E0ED4: .4byte gBattleAnimArgs
+_080E0ED8: .4byte sub_80E0EDC
+ thumb_func_end sub_80E0E94
+
+ thumb_func_start sub_80E0EDC
+sub_80E0EDC: @ 80E0EDC
+ 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 r2, 0x30
+ ldrsh r0, [r4, r2]
+ ldrh r1, [r4, 0x34]
+ lsls r1, 16
+ asrs r1, 24
+ bl Cos
+ strh r0, [r4, 0x26]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x9
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ lsls r1, r0, 16
+ cmp r0, 0x3F
+ bls _080E0F16
+ asrs r0, r1, 16
+ cmp r0, 0xC3
+ ble _080E0F28
+_080E0F16:
+ ldr r0, _080E0F24 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807685C
+ subs r0, 0x1
+ b _080E0F32
+ .align 2, 0
+_080E0F24: .4byte gBattleAnimAttacker
+_080E0F28:
+ ldr r0, _080E0F74 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_807685C
+ adds r0, 0x1
+_080E0F32:
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ movs r3, 0x38
+ ldrsh r2, [r4, r3]
+ cmp r2, 0
+ bne _080E0F78
+ movs r1, 0x80
+ lsls r1, 3
+ adds r0, r1, 0
+ ldrh r3, [r4, 0x32]
+ adds r0, r3
+ strh r0, [r4, 0x32]
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1, 0
+ ldrh r3, [r4, 0x34]
+ adds r0, r3
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ movs r3, 0x2E
+ ldrsh r1, [r4, r3]
+ cmp r0, r1
+ bne _080E0FA8
+ strh r2, [r4, 0x36]
+ movs r0, 0x1
+ strh r0, [r4, 0x38]
+ b _080E0FA8
+ .align 2, 0
+_080E0F74: .4byte gBattleAnimAttacker
+_080E0F78:
+ cmp r2, 0x1
+ bne _080E0FA8
+ ldr r1, _080E0FB0 @ =0xfffffc00
+ adds r0, r1, 0
+ ldrh r2, [r4, 0x32]
+ adds r0, r2
+ strh r0, [r4, 0x32]
+ ldr r3, _080E0FB4 @ =0xffffff00
+ adds r0, r3, 0
+ ldrh r1, [r4, 0x34]
+ adds r0, r1
+ strh r0, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r0, 0x1
+ strh r0, [r4, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ cmp r0, r1
+ bne _080E0FA8
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E0FA8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E0FB0: .4byte 0xfffffc00
+_080E0FB4: .4byte 0xffffff00
+ thumb_func_end sub_80E0EDC
+
+ thumb_func_start sub_80E0FB8
+sub_80E0FB8: @ 80E0FB8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x20
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x18]
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ ldr r0, _080E1040 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E107C
+ movs r0, 0
+ str r0, [sp, 0x1C]
+ ldr r6, _080E1044 @ =gBattlerPartyIndexes
+ ldr r4, _080E1048 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ movs r5, 0x64
+ muls r0, r5
+ ldr r7, _080E104C @ =gPlayerParty
+ adds r0, r7
+ movs r1, 0
+ bl GetMonData
+ mov r10, r0
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ adds r0, r7
+ movs r1, 0x1
+ bl GetMonData
+ mov r9, r0
+ ldr r0, _080E1050 @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldrb r2, [r4]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080E1074
+ adds r0, r2, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E1054
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ adds r0, r7
+ b _080E1062
+ .align 2, 0
+_080E1040: .4byte gBattleAnimAttacker
+_080E1044: .4byte gBattlerPartyIndexes
+_080E1048: .4byte gBattleAnimTarget
+_080E104C: .4byte gPlayerParty
+_080E1050: .4byte gUnknown_2024018
+_080E1054:
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ ldr r1, _080E1070 @ =gEnemyParty
+ adds r0, r1
+_080E1062:
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ b _080E1076
+ .align 2, 0
+_080E1070: .4byte gEnemyParty
+_080E1074:
+ ldrh r6, [r1, 0x2]
+_080E1076:
+ movs r1, 0x14
+ mov r8, r1
+ b _080E1112
+_080E107C:
+ movs r2, 0x1
+ str r2, [sp, 0x1C]
+ ldr r6, _080E10E0 @ =gBattlerPartyIndexes
+ ldr r4, _080E10E4 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ movs r5, 0x64
+ muls r0, r5
+ ldr r7, _080E10E8 @ =gEnemyParty
+ adds r0, r7
+ movs r1, 0
+ bl GetMonData
+ mov r10, r0
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ adds r0, r7
+ movs r1, 0x1
+ bl GetMonData
+ mov r9, r0
+ ldr r0, _080E10EC @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldrb r2, [r4]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080E110C
+ adds r0, r2, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E10F4
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ ldr r1, _080E10F0 @ =gPlayerParty
+ adds r0, r1
+ b _080E1100
+ .align 2, 0
+_080E10E0: .4byte gBattlerPartyIndexes
+_080E10E4: .4byte gBattleAnimTarget
+_080E10E8: .4byte gEnemyParty
+_080E10EC: .4byte gUnknown_2024018
+_080E10F0: .4byte gPlayerParty
+_080E10F4:
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ adds r0, r7
+_080E1100:
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ b _080E110E
+_080E110C:
+ ldrh r6, [r1, 0x2]
+_080E110E:
+ ldr r3, _080E11FC @ =0x0000ffec
+ mov r8, r3
+_080E1112:
+ ldr r0, _080E1200 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl sub_8076884
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r5, _080E1200 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ mov r2, r8
+ lsls r1, r2, 16
+ asrs r1, 16
+ adds r4, r1
+ lsls r4, 16
+ asrs r4, 16
+ lsrs r0, 24
+ str r0, [sp]
+ movs r0, 0x5
+ str r0, [sp, 0x4]
+ mov r3, r10
+ str r3, [sp, 0x8]
+ mov r0, r9
+ str r0, [sp, 0xC]
+ ldr r0, _080E1204 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ str r0, [sp, 0x10]
+ movs r0, 0x1
+ str r0, [sp, 0x14]
+ adds r0, r6, 0
+ ldr r1, [sp, 0x1C]
+ movs r2, 0
+ adds r3, r4, 0
+ bl sub_80768D0
+ adds r6, r0, 0
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r0, _080E1208 @ =gSprites
+ lsls r5, r6, 4
+ adds r5, r6
+ lsls r5, 2
+ adds r5, r0
+ movs r0, 0x3
+ ands r7, r0
+ lsls r7, 2
+ mov r8, r7
+ ldrb r0, [r5, 0x5]
+ movs r4, 0xD
+ negs r4, r4
+ adds r1, r4, 0
+ ands r1, r0
+ mov r2, r8
+ orrs r1, r2
+ strb r1, [r5, 0x5]
+ ldrb r2, [r5, 0x1]
+ adds r0, r4, 0
+ ands r0, r2
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r5, 0x1]
+ ldr r0, _080E120C @ =0x00007fff
+ lsrs r1, 4
+ lsls r1, 4
+ movs r3, 0x80
+ lsls r3, 1
+ adds r2, r3, 0
+ orrs r1, r2
+ movs r2, 0x20
+ bl FillPalette
+ ldrb r0, [r5, 0x5]
+ ands r4, r0
+ mov r0, r8
+ orrs r4, r0
+ strb r4, [r5, 0x5]
+ movs r1, 0xFD
+ lsls r1, 6
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r0, _080E1210 @ =gTasks
+ ldr r1, [sp, 0x18]
+ lsls r4, r1, 2
+ adds r4, r1
+ lsls r4, 3
+ adds r4, r0
+ ldrh r0, [r4, 0xA]
+ movs r1, 0x10
+ subs r1, r0
+ lsls r1, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ strh r6, [r4, 0x8]
+ ldr r0, _080E1214 @ =sub_80E1218
+ str r0, [r4]
+ add sp, 0x20
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E11FC: .4byte 0x0000ffec
+_080E1200: .4byte gBattleAnimAttacker
+_080E1204: .4byte gBattleAnimTarget
+_080E1208: .4byte gSprites
+_080E120C: .4byte 0x00007fff
+_080E1210: .4byte gTasks
+_080E1214: .4byte sub_80E1218
+ thumb_func_end sub_80E0FB8
+
+ thumb_func_start sub_80E1218
+sub_80E1218: @ 80E1218
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080E126C @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r4, r1, r2
+ ldrh r0, [r4, 0x1C]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E1266
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+ ldrh r1, [r4, 0xA]
+ adds r1, 0x1
+ strh r1, [r4, 0xA]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xA
+ bne _080E1266
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r4, 0x1C]
+ strh r0, [r4, 0x1E]
+ ldr r0, _080E1270 @ =sub_80E1274
+ str r0, [r4]
+_080E1266:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E126C: .4byte gTasks
+_080E1270: .4byte sub_80E1274
+ thumb_func_end sub_80E1218
+
+ thumb_func_start sub_80E1274
+sub_80E1274: @ 80E1274
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080E12EC @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r5, r1, r2
+ ldrb r2, [r5, 0x8]
+ ldrh r0, [r5, 0x1C]
+ subs r0, 0x10
+ movs r4, 0
+ strh r0, [r5, 0x1C]
+ ldrh r0, [r5, 0x1E]
+ adds r0, 0x80
+ strh r0, [r5, 0x1E]
+ ldr r1, _080E12F0 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r6, r0, r1
+ ldrb r2, [r6, 0x1]
+ lsls r1, r2, 30
+ lsrs r1, 30
+ movs r0, 0x2
+ orrs r1, r0
+ subs r0, 0x6
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r6, 0x1]
+ movs r0, 0x1C
+ ldrsh r2, [r5, r0]
+ movs r0, 0x1E
+ ldrsh r3, [r5, r0]
+ str r4, [sp]
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl sub_8075A1C
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x1
+ strh r0, [r5, 0x20]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bne _080E12E2
+ adds r0, r6, 0
+ bl sub_8075AD8
+ adds r0, r6, 0
+ bl sub_8076B20
+ ldr r0, _080E12F4 @ =sub_8074FA8
+ str r0, [r5]
+_080E12E2:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E12EC: .4byte gTasks
+_080E12F0: .4byte gSprites
+_080E12F4: .4byte sub_8074FA8
+ thumb_func_end sub_80E1274
+
+ thumb_func_start sub_80E12F8
+sub_80E12F8: @ 80E12F8
+ push {r4-r7,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080E1318 @ =gTasks
+ adds r4, r1, r0
+ ldr r0, _080E131C @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E1324
+ ldr r0, _080E1320 @ =gBattleAnimAttacker
+ b _080E1326
+ .align 2, 0
+_080E1318: .4byte gTasks
+_080E131C: .4byte gBattleAnimArgs
+_080E1320: .4byte gBattleAnimAttacker
+_080E1324:
+ ldr r0, _080E13A4 @ =gBattleAnimTarget
+_080E1326:
+ ldrb r5, [r0]
+ movs r6, 0
+ strh r6, [r4, 0x8]
+ strh r6, [r4, 0xA]
+ strh r6, [r4, 0xC]
+ movs r0, 0x10
+ strh r0, [r4, 0xE]
+ strh r6, [r4, 0x10]
+ strh r5, [r4, 0x12]
+ movs r0, 0x20
+ strh r0, [r4, 0x14]
+ strh r6, [r4, 0x16]
+ movs r0, 0x18
+ strh r0, [r4, 0x18]
+ adds r0, r5, 0
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E1358
+ movs r1, 0x18
+ ldrsh r0, [r4, r1]
+ negs r0, r0
+ strh r0, [r4, 0x18]
+_080E1358:
+ adds r0, r5, 0
+ bl sub_807492C
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x22
+ strh r0, [r4, 0x22]
+ cmp r0, 0
+ bge _080E136C
+ strh r6, [r4, 0x22]
+_080E136C:
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x42
+ strh r0, [r4, 0x24]
+ ldr r0, _080E13A8 @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ adds r0, r5, 0
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E13BC
+ ldr r0, _080E13AC @ =0x04000014
+ str r0, [sp]
+ ldr r1, _080E13B0 @ =0x00003f42
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r0, _080E13B4 @ =gBattle_BG1_X
+ ldrh r5, [r0]
+ ldr r0, _080E13B8 @ =gBattle_BG1_Y
+ b _080E13CE
+ .align 2, 0
+_080E13A4: .4byte gBattleAnimTarget
+_080E13A8: .4byte gBattleAnimArgs
+_080E13AC: .4byte 0x04000014
+_080E13B0: .4byte 0x00003f42
+_080E13B4: .4byte gBattle_BG1_X
+_080E13B8: .4byte gBattle_BG1_Y
+_080E13BC:
+ ldr r0, _080E1434 @ =0x04000018
+ str r0, [sp]
+ ldr r1, _080E1438 @ =0x00003f44
+ movs r0, 0x50
+ bl SetGpuReg
+ ldr r0, _080E143C @ =gBattle_BG2_X
+ ldrh r5, [r0]
+ ldr r0, _080E1440 @ =gBattle_BG2_Y
+_080E13CE:
+ ldrh r3, [r0]
+ movs r7, 0
+ movs r2, 0
+ ldr r6, _080E1444 @ =gScanlineEffectRegBuffers
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r0, r6
+ mov r12, r0
+_080E13DE:
+ lsls r2, 16
+ asrs r2, 16
+ lsls r1, r2, 1
+ adds r0, r1, r6
+ strh r5, [r0]
+ add r1, r12
+ strh r5, [r1]
+ adds r0, r2, 0x1
+ lsls r0, 1
+ adds r1, r0, r6
+ strh r3, [r1]
+ add r0, r12
+ strh r3, [r0]
+ lsls r0, r7, 16
+ movs r1, 0x80
+ lsls r1, 9
+ adds r0, r1
+ adds r2, 0x2
+ lsls r2, 16
+ lsrs r2, 16
+ lsrs r7, r0, 16
+ asrs r0, 16
+ cmp r0, 0x9F
+ ble _080E13DE
+ ldr r0, _080E1448 @ =0xa6600001
+ str r0, [sp, 0x4]
+ mov r1, sp
+ movs r2, 0
+ movs r0, 0x1
+ strb r0, [r1, 0x8]
+ mov r0, sp
+ strb r2, [r0, 0x9]
+ ldr r0, [sp]
+ ldr r1, [sp, 0x4]
+ ldr r2, [sp, 0x8]
+ bl ScanlineEffect_SetParams
+ ldr r0, _080E144C @ =sub_80E1450
+ str r0, [r4]
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1434: .4byte 0x04000018
+_080E1438: .4byte 0x00003f44
+_080E143C: .4byte gBattle_BG2_X
+_080E1440: .4byte gBattle_BG2_Y
+_080E1444: .4byte gScanlineEffectRegBuffers
+_080E1448: .4byte 0xa6600001
+_080E144C: .4byte sub_80E1450
+ thumb_func_end sub_80E12F8
+
+ thumb_func_start sub_80E1450
+sub_80E1450: @ 80E1450
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080E1484 @ =gTasks
+ adds r6, r0, r1
+ ldrb r0, [r6, 0x12]
+ bl sub_80768B0
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E1490
+ ldr r0, _080E1488 @ =gBattle_BG1_X
+ ldrh r0, [r0]
+ str r0, [sp, 0x4]
+ ldr r0, _080E148C @ =gBattle_BG1_Y
+ b _080E1498
+ .align 2, 0
+_080E1484: .4byte gTasks
+_080E1488: .4byte gBattle_BG1_X
+_080E148C: .4byte gBattle_BG1_Y
+_080E1490:
+ ldr r0, _080E14B0 @ =gBattle_BG2_X
+ ldrh r0, [r0]
+ str r0, [sp, 0x4]
+ ldr r0, _080E14B4 @ =gBattle_BG2_Y
+_080E1498:
+ ldrh r0, [r0]
+ str r0, [sp, 0x8]
+ movs r1, 0x8
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x1
+ bne _080E14A6
+ b _080E1684
+_080E14A6:
+ cmp r0, 0x1
+ bgt _080E14B8
+ cmp r0, 0
+ beq _080E14C6
+ b _080E16F4
+ .align 2, 0
+_080E14B0: .4byte gBattle_BG2_X
+_080E14B4: .4byte gBattle_BG2_Y
+_080E14B8:
+ cmp r0, 0x2
+ bne _080E14BE
+ b _080E16A4
+_080E14BE:
+ cmp r0, 0x3
+ bne _080E14C4
+ b _080E16EE
+_080E14C4:
+ b _080E16F4
+_080E14C6:
+ movs r2, 0x24
+ ldrsh r0, [r6, r2]
+ lsls r0, 17
+ lsrs r5, r0, 16
+ movs r3, 0
+ str r3, [sp]
+ mov r9, r3
+ movs r4, 0
+ ldrh r0, [r6, 0xA]
+ adds r0, 0x2
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r6, 0xA]
+ ldrh r7, [r6, 0xA]
+ mov r8, r7
+ movs r0, 0x14
+ ldrsh r1, [r6, r0]
+ movs r0, 0xFC
+ lsls r0, 3
+ bl __divsi3
+ strh r0, [r6, 0x1A]
+ movs r1, 0x16
+ ldrsh r0, [r6, r1]
+ lsls r0, 1
+ movs r2, 0x1A
+ ldrsh r1, [r6, r2]
+ bl __divsi3
+ negs r0, r0
+ strh r0, [r6, 0x1C]
+ ldrh r0, [r6, 0x16]
+ strh r0, [r6, 0x1E]
+ lsls r0, 16
+ asrs r0, 21
+ lsls r0, 16
+ lsrs r7, r0, 16
+ strh r7, [r6, 0x20]
+ ldrh r2, [r6, 0x24]
+ lsls r3, r2, 16
+ mov r12, r3
+ asrs r1, r3, 16
+ movs r3, 0x22
+ ldrsh r0, [r6, r3]
+ cmp r1, r0
+ ble _080E15E6
+ ldr r0, _080E163C @ =gScanlineEffect
+ mov r10, r0
+ ldr r1, [sp, 0x4]
+ lsls r0, r1, 16
+ asrs r0, 16
+ str r0, [sp, 0x10]
+ ldr r2, [sp, 0x8]
+ lsls r0, r2, 16
+ asrs r0, 16
+ str r0, [sp, 0xC]
+_080E1536:
+ lsls r5, 16
+ asrs r5, 16
+ adds r2, r5, 0x1
+ lsls r2, 1
+ mov r3, r10
+ ldrb r1, [r3, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r2, r0
+ ldr r0, _080E1640 @ =gScanlineEffectRegBuffers
+ adds r2, r0
+ lsls r4, 16
+ asrs r4, 16
+ mov r1, r9
+ lsls r0, r1, 16
+ asrs r0, 16
+ subs r0, r4, r0
+ ldr r3, [sp, 0xC]
+ adds r0, r3, r0
+ strh r0, [r2]
+ lsls r3, r5, 1
+ mov r0, r10
+ ldrb r1, [r0, 0x14]
+ lsls r0, r1, 4
+ subs r0, r1
+ lsls r0, 7
+ adds r3, r0
+ ldr r1, _080E1640 @ =gScanlineEffectRegBuffers
+ adds r3, r1
+ lsls r1, r7, 16
+ asrs r1, 16
+ ldr r2, [sp, 0x10]
+ adds r1, r2, r1
+ mov r7, r8
+ lsls r2, r7, 16
+ asrs r2, 16
+ lsls r0, r2, 1
+ ldr r7, _080E1644 @ =gSineTable
+ adds r0, r7
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 21
+ adds r1, r0
+ strh r1, [r3]
+ adds r2, 0xA
+ mov r8, r2
+ movs r0, 0xFF
+ mov r1, r8
+ ands r1, r0
+ mov r8, r1
+ ldrh r0, [r6, 0x1C]
+ ldrh r2, [r6, 0x1E]
+ adds r0, r2
+ strh r0, [r6, 0x1E]
+ lsls r0, 16
+ asrs r0, 21
+ lsls r0, 16
+ lsrs r7, r0, 16
+ strh r7, [r6, 0x20]
+ adds r4, 0x1
+ lsls r4, 16
+ lsrs r4, 16
+ subs r5, 0x2
+ lsls r5, 16
+ lsrs r5, 16
+ ldr r3, [sp]
+ lsls r0, r3, 16
+ asrs r0, 16
+ ldrh r1, [r6, 0x14]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ str r2, [sp]
+ asrs r0, 21
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ ldr r0, _080E1648 @ =0xffff0000
+ add r0, r12
+ lsrs r2, r0, 16
+ lsls r3, r2, 16
+ mov r12, r3
+ asrs r1, r3, 16
+ movs r3, 0x22
+ ldrsh r0, [r6, r3]
+ cmp r1, r0
+ bgt _080E1536
+_080E15E6:
+ lsls r1, r2, 17
+ cmp r1, 0
+ blt _080E1612
+ ldr r4, _080E1640 @ =gScanlineEffectRegBuffers
+ ldr r7, [sp, 0x4]
+ lsls r0, r7, 16
+ asrs r0, 16
+ adds r3, r0, 0
+ adds r3, 0xF0
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r5, r4, r0
+_080E15FE:
+ asrs r2, r1, 16
+ lsls r1, r2, 1
+ adds r0, r1, r4
+ strh r3, [r0]
+ adds r1, r5
+ strh r3, [r1]
+ subs r2, 0x2
+ lsls r1, r2, 16
+ cmp r1, 0
+ bge _080E15FE
+_080E1612:
+ ldrh r0, [r6, 0x14]
+ adds r0, 0x1
+ strh r0, [r6, 0x14]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3F
+ ble _080E167A
+ movs r0, 0x40
+ strh r0, [r6, 0x14]
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080E164C
+ ldrh r0, [r6, 0xE]
+ subs r0, 0x1
+ strh r0, [r6, 0xE]
+ b _080E1652
+ .align 2, 0
+_080E163C: .4byte gScanlineEffect
+_080E1640: .4byte gScanlineEffectRegBuffers
+_080E1644: .4byte gSineTable
+_080E1648: .4byte 0xffff0000
+_080E164C:
+ ldrh r0, [r6, 0x10]
+ adds r0, 0x1
+ strh r0, [r6, 0x10]
+_080E1652:
+ ldrh r1, [r6, 0x10]
+ lsls r1, 8
+ ldrh r0, [r6, 0xE]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r2, 0xE
+ ldrsh r1, [r6, r2]
+ cmp r1, 0
+ bne _080E16F4
+ movs r3, 0x10
+ ldrsh r0, [r6, r3]
+ cmp r0, 0x10
+ bne _080E16F4
+ strh r1, [r6, 0xC]
+ strh r1, [r6, 0xE]
+ b _080E16E6
+_080E167A:
+ ldrh r0, [r6, 0x18]
+ ldrh r7, [r6, 0x16]
+ adds r0, r7
+ strh r0, [r6, 0x16]
+ b _080E16F4
+_080E1684:
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _080E16F4
+ ldr r1, _080E16A0 @ =gScanlineEffect
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+ movs r0, 0
+ strh r0, [r6, 0xC]
+ b _080E16E6
+ .align 2, 0
+_080E16A0: .4byte gScanlineEffect
+_080E16A4:
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _080E16BA
+ ldrh r0, [r6, 0xE]
+ adds r0, 0x1
+ strh r0, [r6, 0xE]
+ b _080E16C0
+_080E16BA:
+ ldrh r0, [r6, 0x10]
+ subs r0, 0x1
+ strh r0, [r6, 0x10]
+_080E16C0:
+ ldrh r1, [r6, 0x10]
+ lsls r1, 8
+ ldrh r0, [r6, 0xE]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x10
+ bne _080E16F4
+ movs r2, 0x10
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ bne _080E16F4
+ strh r0, [r6, 0xC]
+ strh r0, [r6, 0xE]
+_080E16E6:
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ strh r0, [r6, 0x8]
+ b _080E16F4
+_080E16EE:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080E16F4:
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E1450
+
+ thumb_func_start sub_80E1704
+sub_80E1704: @ 80E1704
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080E173C @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldr r0, _080E1740 @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r4, 0x26]
+ ldr r2, _080E1744 @ =gUnknown_83FF3D0
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080E1748 @ =sub_80E174C
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E173C: .4byte gTasks
+_080E1740: .4byte gBattleAnimArgs
+_080E1744: .4byte gUnknown_83FF3D0
+_080E1748: .4byte sub_80E174C
+ thumb_func_end sub_80E1704
+
+ thumb_func_start sub_80E174C
+sub_80E174C: @ 80E174C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r2, _080E17A4 @ =gTasks
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x8]
+ adds r1, r0, 0x1
+ movs r5, 0
+ strh r1, [r3, 0x8]
+ subs r0, 0x14
+ lsls r0, 16
+ lsrs r0, 16
+ adds r6, r2, 0
+ cmp r0, 0x16
+ bhi _080E17B0
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E17C0
+ strh r5, [r3, 0xA]
+ ldrh r0, [r3, 0xC]
+ adds r0, 0x1
+ strh r0, [r3, 0xC]
+ movs r5, 0x1
+ ands r0, r5
+ cmp r0, 0
+ bne _080E17B0
+ ldr r2, _080E17A8 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _080E17AC @ =0x0000ffff
+ strh r1, [r0, 0x24]
+ b _080E17C0
+ .align 2, 0
+_080E17A4: .4byte gTasks
+_080E17A8: .4byte gSprites
+_080E17AC: .4byte 0x0000ffff
+_080E17B0:
+ ldr r2, _080E17E0 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r5, [r0, 0x24]
+_080E17C0:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r6
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E17D8
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080E17D8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E17E0: .4byte gSprites
+ thumb_func_end sub_80E174C
+
+ thumb_func_start sub_80E17E4
+sub_80E17E4: @ 80E17E4
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ mov r8, r0
+ adds r5, r2, 0
+ adds r0, r3, 0
+ ldr r4, [sp, 0x14]
+ ldr r6, [sp, 0x18]
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r5, 16
+ lsrs r5, 16
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r6, 16
+ lsrs r6, 16
+ mov r2, r8
+ strh r1, [r2, 0x20]
+ strh r5, [r2, 0x22]
+ lsls r1, 16
+ asrs r1, 16
+ lsls r2, r1, 4
+ mov r3, r8
+ strh r2, [r3, 0x36]
+ lsls r5, 16
+ asrs r5, 16
+ lsls r2, r5, 4
+ strh r2, [r3, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ subs r0, r1
+ lsls r0, 4
+ adds r1, r6, 0
+ bl __divsi3
+ mov r1, r8
+ strh r0, [r1, 0x3A]
+ lsls r4, 16
+ asrs r4, 16
+ subs r4, r5
+ lsls r4, 4
+ adds r0, r4, 0
+ adds r1, r6, 0
+ bl __divsi3
+ mov r2, r8
+ strh r0, [r2, 0x3C]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E17E4
+
+ thumb_func_start sub_80E184C
+sub_80E184C: @ 80E184C
+ ldrh r1, [r0, 0x3A]
+ ldrh r2, [r0, 0x36]
+ adds r1, r2
+ strh r1, [r0, 0x36]
+ ldrh r2, [r0, 0x3C]
+ ldrh r3, [r0, 0x38]
+ adds r2, r3
+ strh r2, [r0, 0x38]
+ lsls r1, 16
+ asrs r1, 20
+ strh r1, [r0, 0x20]
+ lsls r2, 16
+ asrs r2, 20
+ strh r2, [r0, 0x22]
+ bx lr
+ thumb_func_end sub_80E184C
+
+ thumb_func_start sub_80E186C
+sub_80E186C: @ 80E186C
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ ldrh r6, [r4, 0x20]
+ ldrh r5, [r4, 0x22]
+ bl sub_8074FCC
+ ldr r0, _080E18B4 @ =gBattleAnimArgs
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl StartSpriteAffineAnim
+ movs r0, 0x20
+ ldrsh r1, [r4, r0]
+ movs r0, 0x22
+ ldrsh r2, [r4, r0]
+ lsls r6, 16
+ asrs r6, 16
+ lsls r5, 16
+ asrs r5, 16
+ str r5, [sp]
+ movs r0, 0x40
+ str r0, [sp, 0x4]
+ adds r0, r4, 0
+ adds r3, r6, 0
+ bl sub_80E17E4
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r0, _080E18B8 @ =sub_80E18BC
+ str r0, [r4, 0x1C]
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E18B4: .4byte gBattleAnimArgs
+_080E18B8: .4byte sub_80E18BC
+ thumb_func_end sub_80E186C
+
+ thumb_func_start sub_80E18BC
+sub_80E18BC: @ 80E18BC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ movs r0, 0x2E
+ ldrsh r4, [r5, r0]
+ lsls r4, 3
+ movs r0, 0xFF
+ ands r4, r0
+ adds r0, r5, 0
+ bl sub_80E184C
+ adds r0, r4, 0
+ movs r1, 0x8
+ bl Sin
+ strh r0, [r5, 0x26]
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x3A
+ ble _080E1922
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x1
+ strh r0, [r5, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E1922
+ movs r0, 0
+ strh r0, [r5, 0x30]
+ ldrh r1, [r5, 0x32]
+ adds r1, 0x1
+ strh r1, [r5, 0x32]
+ movs r0, 0x1
+ ands r1, r0
+ adds r3, r5, 0
+ adds r3, 0x3E
+ lsls r1, 2
+ ldrb r2, [r3]
+ subs r0, 0x6
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r1, 0x32
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x3
+ ble _080E1922
+ adds r0, r5, 0
+ bl move_anim_8074EE0
+_080E1922:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E18BC
+
+ thumb_func_start sub_80E1928
+sub_80E1928: @ 80E1928
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080E1980 @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x6]
+ strh r0, [r5, 0x2E]
+ ldrb r1, [r6]
+ adds r0, r5, 0
+ bl StartSpriteAffineAnim
+ ldr r0, _080E1984 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E194E
+ ldrh r0, [r6, 0x2]
+ negs r0, r0
+ strh r0, [r6, 0x2]
+_080E194E:
+ ldr r4, _080E1988 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r6, 0x2]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x4]
+ adds r0, r6
+ strh r0, [r5, 0x22]
+ ldr r0, _080E198C @ =sub_80B1D3C
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1980: .4byte gBattleAnimArgs
+_080E1984: .4byte gBattleAnimTarget
+_080E1988: .4byte gBattleAnimAttacker
+_080E198C: .4byte sub_80B1D3C
+ thumb_func_end sub_80E1928
+
+ thumb_func_start sub_80E1990
+sub_80E1990: @ 80E1990
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r7, 0
+ ldr r2, _080E19E0 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x8]
+ subs r0, 0x1
+ strh r0, [r3, 0x8]
+ movs r1, 0x14
+ ldrsh r0, [r3, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ mov r8, r2
+ cmp r0, 0
+ beq _080E1A12
+ ldrh r0, [r3, 0xA]
+ subs r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080E1A12
+ movs r2, 0x1A
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _080E19E4
+ ldrh r0, [r3, 0x10]
+ strh r0, [r3, 0x1A]
+ negs r0, r0
+ strh r0, [r3, 0x10]
+ b _080E19E6
+ .align 2, 0
+_080E19E0: .4byte gTasks
+_080E19E4:
+ strh r7, [r3, 0x1A]
+_080E19E6:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ mov r2, r8
+ adds r1, r0, r2
+ movs r2, 0x1C
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080E1A02
+ ldrh r0, [r1, 0x12]
+ strh r0, [r1, 0x1C]
+ negs r0, r0
+ strh r0, [r1, 0x12]
+ b _080E1A06
+_080E1A02:
+ movs r0, 0
+ strh r0, [r1, 0x1C]
+_080E1A06:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ add r0, r8
+ ldrh r1, [r0, 0x22]
+ strh r1, [r0, 0xA]
+_080E1A12:
+ lsls r2, r5, 2
+ adds r0, r2, r5
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ ldrh r6, [r4, 0x16]
+ ldrh r7, [r4, 0x18]
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ mov r12, r2
+ cmp r0, 0
+ beq _080E1A50
+ ldr r3, _080E1A4C @ =gSprites
+ movs r2, 0x26
+ ldrsh r0, [r4, r2]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ lsrs r2, r6, 8
+ ldrh r0, [r4, 0x1A]
+ subs r0, r2
+ strh r0, [r1, 0x24]
+ adds r2, r3, 0
+ b _080E1A66
+ .align 2, 0
+_080E1A4C: .4byte gSprites
+_080E1A50:
+ ldr r2, _080E1A94 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ lsrs r1, r6, 8
+ ldrh r4, [r4, 0x1A]
+ adds r1, r4
+ strh r1, [r0, 0x24]
+_080E1A66:
+ mov r1, r12
+ adds r0, r1, r5
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080E1A98
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ lsrs r2, r7, 8
+ ldrh r0, [r4, 0x1C]
+ subs r0, r2
+ b _080E1AAA
+ .align 2, 0
+_080E1A94: .4byte gSprites
+_080E1A98:
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ lsrs r0, r7, 8
+ ldrh r4, [r4, 0x1C]
+ adds r0, r4
+_080E1AAA:
+ strh r0, [r1, 0x26]
+ mov r2, r12
+ adds r0, r2, r5
+ lsls r0, 3
+ add r0, r8
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bgt _080E1ACA
+ adds r0, r5, 0
+ bl DestroyTask
+ ldr r1, _080E1AD4 @ =gUnknown_2037EE2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+_080E1ACA:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1AD4: .4byte gUnknown_2037EE2
+ thumb_func_end sub_80E1990
+
+ thumb_func_start sub_80E1AD8
+sub_80E1AD8: @ 80E1AD8
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r7, 0
+ ldr r2, _080E1B2C @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x8]
+ subs r0, 0x1
+ strh r0, [r3, 0x8]
+ movs r1, 0x14
+ ldrsh r0, [r3, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ mov r8, r2
+ cmp r0, 0
+ beq _080E1B5E
+ ldrh r0, [r3, 0xA]
+ subs r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080E1B5E
+ movs r2, 0x1A
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _080E1B30
+ ldrh r0, [r3, 0x10]
+ strh r0, [r3, 0x1A]
+ negs r0, r0
+ strh r0, [r3, 0x10]
+ b _080E1B32
+ .align 2, 0
+_080E1B2C: .4byte gTasks
+_080E1B30:
+ strh r7, [r3, 0x1A]
+_080E1B32:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ mov r2, r8
+ adds r1, r0, r2
+ movs r2, 0x1C
+ ldrsh r0, [r1, r2]
+ cmp r0, 0
+ bne _080E1B4E
+ ldrh r0, [r1, 0x12]
+ strh r0, [r1, 0x1C]
+ negs r0, r0
+ strh r0, [r1, 0x12]
+ b _080E1B52
+_080E1B4E:
+ movs r0, 0
+ strh r0, [r1, 0x1C]
+_080E1B52:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ add r0, r8
+ ldrh r1, [r0, 0x22]
+ strh r1, [r0, 0xA]
+_080E1B5E:
+ lsls r3, r6, 2
+ adds r0, r3, r6
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ ldrh r2, [r4, 0xC]
+ ldr r1, _080E1BB0 @ =0x00007fff
+ adds r0, r1, 0
+ ands r0, r2
+ ldrh r2, [r4, 0x16]
+ adds r0, r2
+ lsls r5, r0, 16
+ lsrs r0, r5, 16
+ mov r9, r0
+ ldrh r0, [r4, 0xE]
+ ands r1, r0
+ ldrh r2, [r4, 0x18]
+ adds r1, r2
+ lsls r1, 16
+ lsrs r7, r1, 16
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ mov r12, r3
+ cmp r0, 0
+ beq _080E1BB8
+ ldr r3, _080E1BB4 @ =gSprites
+ movs r2, 0x26
+ ldrsh r0, [r4, r2]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ lsrs r2, r5, 24
+ ldrh r0, [r4, 0x1A]
+ subs r0, r2
+ strh r0, [r1, 0x24]
+ adds r2, r3, 0
+ b _080E1BCE
+ .align 2, 0
+_080E1BB0: .4byte 0x00007fff
+_080E1BB4: .4byte gSprites
+_080E1BB8:
+ ldr r2, _080E1BFC @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ lsrs r1, r5, 24
+ ldrh r4, [r4, 0x1A]
+ adds r1, r4
+ strh r1, [r0, 0x24]
+_080E1BCE:
+ mov r1, r12
+ adds r0, r1, r6
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080E1C00
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ lsrs r2, r7, 8
+ ldrh r0, [r4, 0x1C]
+ subs r0, r2
+ b _080E1C12
+ .align 2, 0
+_080E1BFC: .4byte gSprites
+_080E1C00:
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ lsrs r0, r7, 8
+ ldrh r4, [r4, 0x1C]
+ adds r0, r4
+_080E1C12:
+ strh r0, [r1, 0x26]
+ mov r2, r12
+ adds r0, r2, r6
+ lsls r0, 3
+ mov r1, r8
+ adds r2, r0, r1
+ mov r0, r9
+ strh r0, [r2, 0x16]
+ strh r7, [r2, 0x18]
+ movs r1, 0x8
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bgt _080E1C38
+ movs r0, 0x1E
+ strh r0, [r2, 0x8]
+ movs r0, 0
+ strh r0, [r2, 0x22]
+ ldr r0, _080E1C44 @ =sub_80E1990
+ str r0, [r2]
+_080E1C38:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1C44: .4byte sub_80E1990
+ thumb_func_end sub_80E1AD8
+
+ thumb_func_start sub_80E1C48
+sub_80E1C48: @ 80E1C48
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _080E1CA8 @ =gTasks
+ mov r8, r0
+ lsls r7, r6, 2
+ adds r0, r7, r6
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ ldr r1, _080E1CAC @ =gBattlerSpriteIds
+ ldr r2, _080E1CB0 @ =gBattleAnimAttacker
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r4, 0x26]
+ ldr r5, _080E1CB4 @ =gBattleAnimArgs
+ ldrh r0, [r5]
+ strh r0, [r4, 0x24]
+ ldrh r0, [r5]
+ strh r0, [r4, 0x8]
+ ldrh r0, [r5, 0xC]
+ strh r0, [r4, 0x22]
+ movs r3, 0x6
+ ldrsh r0, [r5, r3]
+ cmp r0, 0
+ beq _080E1C8C
+ ldrh r0, [r4, 0x14]
+ ldr r3, _080E1CB8 @ =0xffff8000
+ adds r1, r3, 0
+ orrs r0, r1
+ strh r0, [r4, 0x14]
+_080E1C8C:
+ ldrb r0, [r2]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E1CBC
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0xC]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0xE]
+ mov r3, r8
+ adds r4, r7, 0
+ b _080E1D2C
+ .align 2, 0
+_080E1CA8: .4byte gTasks
+_080E1CAC: .4byte gBattlerSpriteIds
+_080E1CB0: .4byte gBattleAnimAttacker
+_080E1CB4: .4byte gBattleAnimArgs
+_080E1CB8: .4byte 0xffff8000
+_080E1CBC:
+ movs r7, 0x2
+ ldrsh r0, [r5, r7]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _080E1CD8
+ ldrh r1, [r5, 0x2]
+ ldr r0, _080E1CD4 @ =0x00007fff
+ ands r0, r1
+ b _080E1CE0
+ .align 2, 0
+_080E1CD4: .4byte 0x00007fff
+_080E1CD8:
+ ldrh r0, [r5, 0x2]
+ ldr r2, _080E1D08 @ =0xffff8000
+ adds r1, r2, 0
+ orrs r0, r1
+_080E1CE0:
+ strh r0, [r4, 0xC]
+ ldr r0, _080E1D0C @ =gBattleAnimArgs
+ movs r3, 0x4
+ ldrsh r1, [r0, r3]
+ movs r2, 0x80
+ lsls r2, 8
+ ands r1, r2
+ adds r5, r0, 0
+ cmp r1, 0
+ beq _080E1D18
+ ldr r3, _080E1D10 @ =gTasks
+ lsls r4, r6, 2
+ adds r1, r4, r6
+ lsls r1, 3
+ adds r1, r3
+ ldrh r2, [r5, 0x4]
+ ldr r0, _080E1D14 @ =0x00007fff
+ ands r0, r2
+ b _080E1D2A
+ .align 2, 0
+_080E1D08: .4byte 0xffff8000
+_080E1D0C: .4byte gBattleAnimArgs
+_080E1D10: .4byte gTasks
+_080E1D14: .4byte 0x00007fff
+_080E1D18:
+ ldr r3, _080E1D50 @ =gTasks
+ lsls r4, r6, 2
+ adds r1, r4, r6
+ lsls r1, 3
+ adds r1, r3
+ ldrh r2, [r5, 0x4]
+ ldr r7, _080E1D54 @ =0xffff8000
+ adds r0, r7, 0
+ orrs r0, r2
+_080E1D2A:
+ strh r0, [r1, 0xE]
+_080E1D2C:
+ adds r0, r4, r6
+ lsls r0, 3
+ adds r0, r3
+ movs r1, 0
+ strh r1, [r0, 0x18]
+ strh r1, [r0, 0x16]
+ ldrh r1, [r5, 0x8]
+ strh r1, [r0, 0x10]
+ ldrh r1, [r5, 0xA]
+ strh r1, [r0, 0x12]
+ ldr r1, _080E1D58 @ =sub_80E1AD8
+ str r1, [r0]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1D50: .4byte gTasks
+_080E1D54: .4byte 0xffff8000
+_080E1D58: .4byte sub_80E1AD8
+ thumb_func_end sub_80E1C48
+
+ thumb_func_start sub_80E1D5C
+sub_80E1D5C: @ 80E1D5C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080E1D94 @ =gTasks
+ adds r5, r0, r1
+ ldr r4, _080E1D98 @ =gBattleAnimArgs
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E1D7C
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080E1D7C:
+ movs r0, 0
+ strh r0, [r5, 0x8]
+ strh r0, [r5, 0xA]
+ strh r0, [r5, 0xC]
+ ldrh r0, [r4, 0x2]
+ strh r0, [r5, 0xE]
+ movs r1, 0
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E1DA0
+ ldr r0, _080E1D9C @ =gBattleAnimAttacker
+ b _080E1DA2
+ .align 2, 0
+_080E1D94: .4byte gTasks
+_080E1D98: .4byte gBattleAnimArgs
+_080E1D9C: .4byte gBattleAnimAttacker
+_080E1DA0:
+ ldr r0, _080E1DF0 @ =gBattleAnimTarget
+_080E1DA2:
+ ldrb r4, [r0]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x10]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x12]
+ adds r0, r4, 0
+ bl sub_807685C
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x14]
+ ldr r0, _080E1DF4 @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r5, 0x26]
+ ldr r2, _080E1DF8 @ =gUnknown_83FF52C
+ adds r0, r5, 0
+ bl sub_80762D0
+ ldr r0, _080E1DFC @ =sub_80E1E00
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1DF0: .4byte gBattleAnimTarget
+_080E1DF4: .4byte gBattleAnimArgs
+_080E1DF8: .4byte gUnknown_83FF52C
+_080E1DFC: .4byte sub_80E1E00
+ thumb_func_end sub_80E1D5C
+
+ thumb_func_start sub_80E1E00
+sub_80E1E00: @ 80E1E00
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _080E1E20 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080E1E24
+ cmp r0, 0x1
+ beq _080E1E84
+ b _080E1E92
+ .align 2, 0
+_080E1E20: .4byte gTasks
+_080E1E24:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080E1E3A
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_80E1E98
+_080E1E3A:
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x12
+ bne _080E1E4A
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80E1E98
+_080E1E4A:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _080E1E92
+ ldrh r0, [r4, 0xE]
+ subs r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080E1E6C
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E1E92
+_080E1E6C:
+ strh r1, [r4, 0xA]
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080E1E80 @ =gUnknown_83FF52C
+ adds r0, r4, 0
+ bl sub_80762D0
+ b _080E1E92
+ .align 2, 0
+_080E1E80: .4byte gUnknown_83FF52C
+_080E1E84:
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E1E92
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080E1E92:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E1E00
+
+ thumb_func_start sub_80E1E98
+sub_80E1E98: @ 80E1E98
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r2, _080E1EBC @ =gTasks
+ adds r4, r0, r2
+ cmp r1, 0
+ bne _080E1EC0
+ movs r1, 0x12
+ movs r3, 0xEC
+ b _080E1EC4
+ .align 2, 0
+_080E1EBC: .4byte gTasks
+_080E1EC0:
+ movs r1, 0x1E
+ movs r3, 0x14
+_080E1EC4:
+ mov r2, sp
+ ldrh r0, [r4, 0x10]
+ subs r0, r1
+ strh r0, [r2]
+ ldrh r0, [r4, 0x10]
+ subs r0, r1
+ subs r0, 0x4
+ strh r0, [r2, 0x2]
+ ldrh r0, [r4, 0x10]
+ adds r0, r1
+ strh r0, [r2, 0x4]
+ ldrh r0, [r4, 0x10]
+ adds r0, r1
+ adds r0, 0x4
+ strh r0, [r2, 0x6]
+ add r2, sp, 0x8
+ lsls r1, r3, 24
+ asrs r1, 24
+ ldrh r0, [r4, 0x12]
+ adds r0, r1
+ strh r0, [r2]
+ ldrh r0, [r4, 0x12]
+ adds r0, r1
+ adds r0, 0x6
+ strh r0, [r2, 0x2]
+ movs r5, 0
+ mov r8, r2
+ ldr r7, _080E1F68 @ =gSprites
+_080E1EFC:
+ lsls r0, r5, 1
+ add r0, sp
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ movs r0, 0x1
+ ands r0, r5
+ lsls r0, 1
+ add r0, r8
+ movs r3, 0
+ ldrsh r2, [r0, r3]
+ ldrb r3, [r4, 0x14]
+ subs r3, 0x5
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r0, _080E1F6C @ =gUnknown_83FF54C
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080E1F50
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r0, r7
+ movs r0, 0
+ strh r0, [r1, 0x2E]
+ movs r0, 0x2
+ cmp r5, 0x1
+ bhi _080E1F3E
+ movs r2, 0x2
+ negs r2, r2
+ adds r0, r2, 0
+_080E1F3E:
+ strh r0, [r1, 0x30]
+ ldr r0, _080E1F70 @ =0x0000ffff
+ strh r0, [r1, 0x32]
+ strh r6, [r1, 0x34]
+ movs r0, 0x2
+ strh r0, [r1, 0x36]
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+_080E1F50:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3
+ bls _080E1EFC
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1F68: .4byte gSprites
+_080E1F6C: .4byte gUnknown_83FF54C
+_080E1F70: .4byte 0x0000ffff
+ thumb_func_end sub_80E1E98
+
+ thumb_func_start sub_80E1F74
+sub_80E1F74: @ 80E1F74
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x32]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ ble _080E1FBA
+ ldr r3, _080E1FC0 @ =gTasks
+ movs r0, 0x36
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x34
+ 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
+_080E1FBA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E1FC0: .4byte gTasks
+ thumb_func_end sub_80E1F74
+
+ thumb_func_start sub_80E1FC4
+sub_80E1FC4: @ 80E1FC4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _080E200C @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldr r1, _080E2010 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0xA]
+ ldrb r0, [r1]
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080E2014 @ =gSprites
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldrb r0, [r1, 0x5]
+ lsrs r0, 4
+ lsls r0, 4
+ movs r2, 0x80
+ lsls r2, 1
+ adds r1, r2, 0
+ adds r0, r1
+ strh r0, [r4, 0xC]
+ ldr r0, _080E2018 @ =sub_80E201C
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E200C: .4byte gTasks
+_080E2010: .4byte gBattleAnimArgs
+_080E2014: .4byte gSprites
+_080E2018: .4byte sub_80E201C
+ thumb_func_end sub_80E1FC4
+
+ thumb_func_start sub_80E201C
+sub_80E201C: @ 80E201C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _080E2064 @ =gTasks
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080E206C
+ ldrh r0, [r4, 0xC]
+ ldr r2, _080E2068 @ =gUnknown_83FF564
+ movs r3, 0x8
+ ldrsh r1, [r4, r3]
+ lsls r1, 1
+ adds r1, r2
+ ldrh r3, [r1]
+ movs r1, 0x10
+ movs r2, 0x8
+ bl BlendPalette
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x17
+ ble _080E205C
+ movs r0, 0
+ strh r0, [r4, 0x8]
+_080E205C:
+ ldrh r0, [r4, 0xA]
+ subs r0, 0x1
+ strh r0, [r4, 0xA]
+ b _080E207E
+ .align 2, 0
+_080E2064: .4byte gTasks
+_080E2068: .4byte gUnknown_83FF564
+_080E206C:
+ ldrh r0, [r4, 0xC]
+ movs r1, 0x10
+ movs r2, 0
+ movs r3, 0
+ bl BlendPalette
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_080E207E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E201C
+
+ thumb_func_start sub_80E2084
+sub_80E2084: @ 80E2084
+ push {lr}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0xD0
+ lsls r2, 1
+ ldr r1, _080E20C0 @ =gBattleAnimAttacker
+ ldrb r3, [r1]
+ ldr r1, _080E20C4 @ =gBattleAnimArgs
+ ldrb r1, [r1]
+ str r1, [sp]
+ movs r1, 0xA
+ str r1, [sp, 0x4]
+ movs r1, 0x2
+ str r1, [sp, 0x8]
+ movs r1, 0x1E
+ str r1, [sp, 0xC]
+ ldr r1, _080E20C8 @ =gFile_graphics_battle_anims_masks_cure_bubbles_sheet
+ str r1, [sp, 0x10]
+ ldr r1, _080E20CC @ =gFile_graphics_battle_anims_masks_cure_bubbles_tilemap
+ str r1, [sp, 0x14]
+ ldr r1, _080E20D0 @ =gFile_graphics_battle_anims_masks_cure_bubbles_palette
+ str r1, [sp, 0x18]
+ movs r1, 0
+ bl sub_80BBA20
+ add sp, 0x1C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E20C0: .4byte gBattleAnimAttacker
+_080E20C4: .4byte gBattleAnimArgs
+_080E20C8: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_sheet
+_080E20CC: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_tilemap
+_080E20D0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette
+ thumb_func_end sub_80E2084
+
+ thumb_func_start sub_80E20D4
+sub_80E20D4: @ 80E20D4
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _080E212C @ =gBattleAnimAttacker
+ ldrb r0, [r6]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E20F0
+ ldr r1, _080E2130 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+_080E20F0:
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ ldr r4, _080E2130 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r5, 0x22]
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E2138
+ movs r0, 0xA0
+ lsls r0, 2
+ strh r0, [r5, 0x2E]
+ ldr r0, _080E2134 @ =0x0000fd80
+ strh r0, [r5, 0x30]
+ b _080E2160
+ .align 2, 0
+_080E212C: .4byte gBattleAnimAttacker
+_080E2130: .4byte gBattleAnimArgs
+_080E2134: .4byte 0x0000fd80
+_080E2138:
+ cmp r0, 0x1
+ bne _080E2152
+ adds r2, r5, 0
+ adds r2, 0x3F
+ ldrb r0, [r2]
+ movs r1, 0x2
+ orrs r0, r1
+ strb r0, [r2]
+ movs r0, 0xA0
+ lsls r0, 2
+ strh r0, [r5, 0x2E]
+ strh r0, [r5, 0x30]
+ b _080E2160
+_080E2152:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ movs r0, 0xA0
+ lsls r0, 2
+ strh r0, [r5, 0x2E]
+_080E2160:
+ ldr r0, _080E218C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E2180
+ ldrh r0, [r5, 0x2E]
+ negs r0, r0
+ strh r0, [r5, 0x2E]
+ adds r2, r5, 0
+ adds r2, 0x3F
+ ldrb r0, [r2]
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+_080E2180:
+ ldr r0, _080E2190 @ =sub_80E2194
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E218C: .4byte gBattleAnimAttacker
+_080E2190: .4byte sub_80E2194
+ thumb_func_end sub_80E20D4
+
+ thumb_func_start sub_80E2194
+sub_80E2194: @ 80E2194
+ push {lr}
+ adds r2, r0, 0
+ ldrh r0, [r2, 0x2E]
+ ldrh r1, [r2, 0x3A]
+ adds r0, r1
+ strh r0, [r2, 0x3A]
+ ldrh r1, [r2, 0x30]
+ ldrh r3, [r2, 0x3C]
+ adds r1, r3
+ strh r1, [r2, 0x3C]
+ lsls r0, 16
+ asrs r0, 24
+ strh r0, [r2, 0x24]
+ lsls r1, 16
+ asrs r1, 24
+ strh r1, [r2, 0x26]
+ ldrh r0, [r2, 0x38]
+ adds r0, 0x1
+ strh r0, [r2, 0x38]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xE
+ bne _080E21C8
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080E21C8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2194
+
+ thumb_func_start sub_80E21CC
+sub_80E21CC: @ 80E21CC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080E221C @ =gTasks
+ adds r6, r1, r0
+ movs r1, 0
+ movs r0, 0xC
+ strh r0, [r6, 0x12]
+ movs r0, 0x3
+ strh r0, [r6, 0x14]
+ strh r1, [r6, 0x16]
+ ldr r5, _080E2220 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E2224
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080E2216
+ adds r0, 0x3
+_080E2216:
+ asrs r0, 2
+ adds r0, r4, r0
+ b _080E2248
+ .align 2, 0
+_080E221C: .4byte gTasks
+_080E2220: .4byte gBattleAnimAttacker
+_080E2224:
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8074480
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080E2244
+ adds r0, 0x3
+_080E2244:
+ asrs r0, 2
+ subs r0, r4, r0
+_080E2248:
+ strh r0, [r6, 0x1E]
+ ldr r5, _080E229C @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080E226C
+ adds r0, 0x3
+_080E226C:
+ asrs r0, 2
+ subs r0, r4, r0
+ strh r0, [r6, 0x20]
+ ldr r4, _080E22A0 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x22]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x24]
+ ldr r0, _080E22A4 @ =sub_80E22A8
+ str r0, [r6]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E229C: .4byte gBattleAnimAttacker
+_080E22A0: .4byte gBattleAnimTarget
+_080E22A4: .4byte sub_80E22A8
+ thumb_func_end sub_80E21CC
+
+ thumb_func_start sub_80E22A8
+sub_80E22A8: @ 80E22A8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _080E22D0 @ =gTasks
+ adds r5, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ cmp r1, 0
+ beq _080E22D4
+ cmp r1, 0x1
+ bne _080E22CC
+ b _080E23CC
+_080E22CC:
+ b _080E23DA
+ .align 2, 0
+_080E22D0: .4byte gTasks
+_080E22D4:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _080E23DA
+ strh r1, [r5, 0xA]
+ movs r1, 0x1E
+ ldrsh r0, [r5, r1]
+ movs r2, 0x20
+ ldrsh r1, [r5, r2]
+ movs r3, 0x22
+ ldrsh r2, [r5, r3]
+ movs r4, 0x24
+ ldrsh r3, [r5, r4]
+ ldrb r4, [r5, 0x12]
+ str r4, [sp]
+ ldrb r4, [r5, 0xC]
+ str r4, [sp, 0x4]
+ add r4, sp, 0x10
+ str r4, [sp, 0x8]
+ adds r4, 0x2
+ str r4, [sp, 0xC]
+ bl sub_80E23E8
+ movs r6, 0
+ mov r8, r4
+ ldr r4, _080E2348 @ =gSprites
+_080E230E:
+ add r0, sp, 0x10
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ mov r3, r8
+ movs r0, 0
+ ldrsh r2, [r3, r0]
+ ldr r0, _080E234C @ =gUnknown_83FF5CC
+ movs r3, 0x23
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x40
+ beq _080E23A2
+ movs r1, 0x16
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080E2362
+ cmp r6, 0
+ bne _080E2350
+ lsls r2, r3, 4
+ adds r1, r2, r3
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r5, 0x14]
+ negs r0, r0
+ strh r0, [r1, 0x26]
+ strh r0, [r1, 0x24]
+ b _080E238A
+ .align 2, 0
+_080E2348: .4byte gSprites
+_080E234C: .4byte gUnknown_83FF5CC
+_080E2350:
+ lsls r2, r3, 4
+ adds r1, r2, r3
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r5, 0x14]
+ strh r0, [r1, 0x26]
+ ldrh r0, [r5, 0x14]
+ strh r0, [r1, 0x24]
+ b _080E238A
+_080E2362:
+ cmp r6, 0
+ bne _080E2378
+ lsls r2, r3, 4
+ adds r1, r2, r3
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r5, 0x14]
+ negs r0, r0
+ strh r0, [r1, 0x24]
+ ldrh r0, [r5, 0x14]
+ b _080E2388
+_080E2378:
+ lsls r2, r3, 4
+ adds r1, r2, r3
+ lsls r1, 2
+ adds r1, r4
+ ldrh r0, [r5, 0x14]
+ strh r0, [r1, 0x24]
+ ldrh r0, [r5, 0x14]
+ negs r0, r0
+_080E2388:
+ strh r0, [r1, 0x26]
+_080E238A:
+ ldr r1, _080E23C8 @ =gSprites
+ adds r0, r2, r3
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0
+ strh r1, [r0, 0x2E]
+ strh r7, [r0, 0x30]
+ movs r1, 0xA
+ strh r1, [r0, 0x32]
+ ldrh r0, [r5, 0x1C]
+ adds r0, 0x1
+ strh r0, [r5, 0x1C]
+_080E23A2:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x1
+ bls _080E230E
+ ldrh r2, [r5, 0xC]
+ movs r3, 0xC
+ ldrsh r1, [r5, r3]
+ movs r4, 0x12
+ ldrsh r0, [r5, r4]
+ cmp r1, r0
+ bne _080E23C0
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_080E23C0:
+ adds r0, r2, 0x1
+ strh r0, [r5, 0xC]
+ b _080E23DA
+ .align 2, 0
+_080E23C8: .4byte gSprites
+_080E23CC:
+ movs r1, 0x1C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _080E23DA
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_080E23DA:
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E22A8
+
+ thumb_func_start sub_80E23E8
+sub_80E23E8: @ 80E23E8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ ldr r4, [sp, 0x28]
+ ldr r5, [sp, 0x2C]
+ ldr r6, [sp, 0x30]
+ mov r9, r6
+ ldr r6, [sp, 0x34]
+ mov r10, r6
+ lsls r0, 16
+ lsrs r0, 16
+ mov r12, r0
+ lsls r1, 16
+ lsrs r1, 16
+ str r1, [sp]
+ lsls r2, 16
+ lsrs r2, 16
+ adds r7, r2, 0
+ lsls r3, 16
+ lsrs r3, 16
+ str r3, [sp, 0x4]
+ lsls r4, 24
+ lsrs r6, r4, 24
+ lsls r5, 24
+ lsrs r5, 24
+ mov r8, r5
+ cmp r5, 0
+ bne _080E2430
+ mov r2, r9
+ strh r0, [r2]
+ mov r6, r10
+ strh r1, [r6]
+ b _080E248E
+_080E2430:
+ cmp r5, r6
+ bcc _080E243E
+ mov r0, r9
+ strh r2, [r0]
+ mov r1, r10
+ strh r3, [r1]
+ b _080E248E
+_080E243E:
+ subs r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ mov r2, r12
+ lsls r1, r2, 16
+ asrs r1, 16
+ lsls r5, r1, 8
+ lsls r0, r7, 16
+ asrs r0, 16
+ subs r0, r1
+ lsls r0, 8
+ adds r1, r6, 0
+ bl __divsi3
+ mov r1, r8
+ muls r1, r0
+ adds r0, r1, 0
+ adds r5, r0
+ ldr r2, [sp]
+ lsls r1, r2, 16
+ asrs r1, 16
+ lsls r4, r1, 8
+ ldr r2, [sp, 0x4]
+ lsls r0, r2, 16
+ asrs r0, 16
+ subs r0, r1
+ lsls r0, 8
+ adds r1, r6, 0
+ bl __divsi3
+ mov r6, r8
+ muls r6, r0
+ adds r0, r6, 0
+ adds r4, r0
+ asrs r5, 8
+ mov r0, r9
+ strh r5, [r0]
+ asrs r4, 8
+ mov r1, r10
+ strh r4, [r1]
+_080E248E:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E23E8
+
+ thumb_func_start sub_80E24A0
+sub_80E24A0: @ 80E24A0
+ 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, 0x24
+ ble _080E24D6
+ ldr r3, _080E24DC @ =gTasks
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ movs r0, 0x30
+ 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
+_080E24D6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E24DC: .4byte gTasks
+ thumb_func_end sub_80E24A0
+
+ thumb_func_start sub_80E24E0
+sub_80E24E0: @ 80E24E0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _080E250C @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x32]
+ ldrh r0, [r1, 0x6]
+ strh r0, [r4, 0x36]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r4, 0x2E]
+ ldr r1, _080E2510 @ =DestroyAnimSprite
+ adds r0, r4, 0
+ bl StoreSpriteCallbackInData6
+ ldr r0, _080E2514 @ =sub_8075764
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E250C: .4byte gBattleAnimArgs
+_080E2510: .4byte DestroyAnimSprite
+_080E2514: .4byte sub_8075764
+ thumb_func_end sub_80E24E0
+
+ thumb_func_start sub_80E2518
+sub_80E2518: @ 80E2518
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ lsls r0, 2
+ add r0, r9
+ lsls r0, 3
+ ldr r1, _080E2638 @ =gTasks
+ adds r7, r0, r1
+ ldr r0, _080E263C @ =gBattleAnimAttacker
+ mov r10, r0
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x1E]
+ mov r1, r10
+ ldrb r0, [r1]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x20]
+ ldr r0, _080E2640 @ =gBattleAnimTarget
+ mov r8, r0
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x22]
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x3
+ bl sub_8074480
+ adds r4, r0, 0
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0
+ bl sub_8076B2C
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _080E258A
+ adds r0, 0x3
+_080E258A:
+ asrs r0, 2
+ adds r0, r4, r0
+ strh r0, [r7, 0x24]
+ ldr r4, _080E2644 @ =gUnknown_83FF62C
+ movs r0, 0x1E
+ ldrsh r5, [r7, r0]
+ movs r1, 0x20
+ ldrsh r6, [r7, r1]
+ mov r1, r8
+ ldrb r0, [r1]
+ bl sub_807685C
+ adds r3, r0, 0
+ subs r3, 0x5
+ lsls r3, 24
+ lsrs r3, 24
+ adds r0, r4, 0
+ adds r1, r5, 0
+ adds r2, r6, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x26]
+ cmp r0, 0x40
+ beq _080E2654
+ ldr r4, _080E2648 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x10
+ strh r1, [r0, 0x2E]
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r7, 0x22]
+ strh r1, [r0, 0x32]
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldrh r1, [r7, 0x24]
+ strh r1, [r0, 0x36]
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ ldr r1, _080E264C @ =0x0000ffe0
+ strh r1, [r0, 0x38]
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ bl sub_8075068
+ mov r1, r10
+ ldrb r0, [r1]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E2632
+ movs r0, 0x26
+ ldrsh r1, [r7, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r4
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+_080E2632:
+ ldr r0, _080E2650 @ =sub_80E2668
+ str r0, [r7]
+ b _080E265A
+ .align 2, 0
+_080E2638: .4byte gTasks
+_080E263C: .4byte gBattleAnimAttacker
+_080E2640: .4byte gBattleAnimTarget
+_080E2644: .4byte gUnknown_83FF62C
+_080E2648: .4byte gSprites
+_080E264C: .4byte 0x0000ffe0
+_080E2650: .4byte sub_80E2668
+_080E2654:
+ mov r0, r9
+ bl DestroyAnimVisualTask
+_080E265A:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2518
+
+ thumb_func_start sub_80E2668
+sub_80E2668: @ 80E2668
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080E268C @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _080E26D0
+ cmp r1, 0x1
+ bgt _080E2690
+ cmp r1, 0
+ beq _080E269A
+ b _080E276E
+ .align 2, 0
+_080E268C: .4byte gTasks
+_080E2690:
+ cmp r1, 0x2
+ beq _080E26F4
+ cmp r1, 0x3
+ beq _080E2768
+ b _080E276E
+_080E269A:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E276E
+ strh r1, [r4, 0xA]
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E26CC @ =gSprites
+ adds r0, r1
+ bl AnimateBallThrow
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ ble _080E276E
+ b _080E275A
+ .align 2, 0
+_080E26CC: .4byte gSprites
+_080E26D0:
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080E26F0 @ =gSprites
+ adds r0, r1
+ bl AnimateBallThrow
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E276E
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ b _080E275A
+ .align 2, 0
+_080E26F0: .4byte gSprites
+_080E26F4:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E276E
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r2, [r4, 0xC]
+ adds r2, 0x1
+ strh r2, [r4, 0xC]
+ ldr r5, _080E2764 @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ movs r0, 0x1
+ ands r2, r0
+ adds r1, 0x3E
+ lsls r2, 2
+ ldrb r3, [r1]
+ subs r0, 0x6
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r1]
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080E276E
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrb r0, [r0, 0x3]
+ lsls r0, 26
+ lsrs r0, 27
+ bl FreeOamMatrix
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ bl DestroySprite
+_080E275A:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E276E
+ .align 2, 0
+_080E2764: .4byte gSprites
+_080E2768:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080E276E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2668
+
+ thumb_func_start sub_80E2774
+sub_80E2774: @ 80E2774
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r0, _080E2788 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ adds r6, r0, 0
+ cmp r1, 0
+ bne _080E2790
+ ldr r0, _080E278C @ =gBattleAnimAttacker
+ b _080E2792
+ .align 2, 0
+_080E2788: .4byte gBattleAnimArgs
+_080E278C: .4byte gBattleAnimAttacker
+_080E2790:
+ ldr r0, _080E27F8 @ =gBattleAnimTarget
+_080E2792:
+ ldrb r5, [r0]
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x10
+ ldr r3, _080E27FC @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080E2800 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ adds r1, r6, 0
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x3A]
+ movs r2, 0x2
+ ldrsh r0, [r1, r2]
+ movs r1, 0x1
+ cmp r0, 0
+ bne _080E27C0
+ movs r3, 0x1
+ negs r3, r3
+ adds r1, r3, 0
+_080E27C0:
+ strh r1, [r4, 0x3C]
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ movs r1, 0x2
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080E2804
+ ldrb r2, [r4, 0x3]
+ lsls r1, r2, 26
+ lsrs r1, 27
+ movs r0, 0x8
+ orrs r1, r0
+ lsls r1, 1
+ subs r0, 0x47
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r4, 0x3]
+ adds r0, r5, 0
+ movs r1, 0x4
+ bl sub_8076B2C
+ subs r0, 0x8
+ b _080E280E
+ .align 2, 0
+_080E27F8: .4byte gBattleAnimTarget
+_080E27FC: .4byte 0x000003ff
+_080E2800: .4byte 0xfffffc00
+_080E2804:
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl sub_8076B2C
+ adds r0, 0x8
+_080E280E:
+ strh r0, [r4, 0x20]
+ ldr r0, _080E281C @ =sub_80E2820
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E281C: .4byte sub_80E2820
+ thumb_func_end sub_80E2774
+
+ thumb_func_start sub_80E2820
+sub_80E2820: @ 80E2820
+ push {lr}
+ adds r2, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r2, r0]
+ cmp r1, 0x1
+ beq _080E2868
+ cmp r1, 0x1
+ bgt _080E2836
+ cmp r1, 0
+ beq _080E2840
+ b _080E28D8
+_080E2836:
+ cmp r1, 0x2
+ beq _080E2878
+ cmp r1, 0x3
+ beq _080E289E
+ b _080E28D8
+_080E2840:
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E28D8
+ strh r1, [r2, 0x30]
+ ldrh r0, [r2, 0x3C]
+ ldrh r1, [r2, 0x24]
+ adds r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x32]
+ adds r0, 0x1
+ strh r0, [r2, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ bne _080E28D8
+ b _080E2896
+_080E2868:
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ bne _080E28D8
+ b _080E2892
+_080E2878:
+ movs r0, 0x3C
+ ldrsh r1, [r2, r0]
+ lsls r1, 2
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080E28D8
+_080E2892:
+ movs r0, 0
+ strh r0, [r2, 0x30]
+_080E2896:
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ b _080E28D8
+_080E289E:
+ movs r0, 0x3C
+ ldrsh r1, [r2, r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ ldrh r1, [r2, 0x24]
+ adds r0, r1
+ strh r0, [r2, 0x24]
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ bne _080E28D8
+ ldrh r0, [r2, 0x3A]
+ subs r0, 0x1
+ strh r0, [r2, 0x3A]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080E28D2
+ movs r0, 0
+ strh r0, [r2, 0x30]
+ ldrh r0, [r2, 0x2E]
+ subs r0, 0x1
+ strh r0, [r2, 0x2E]
+ b _080E28D8
+_080E28D2:
+ adds r0, r2, 0
+ bl DestroyAnimSprite
+_080E28D8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2820
+
+ thumb_func_start sub_80E28DC
+sub_80E28DC: @ 80E28DC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldr r2, _080E28F4 @ =gBattleAnimArgs
+ movs r3, 0
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _080E28F8
+ adds r0, r1, 0
+ bl DestroyAnimVisualTask
+ b _080E2920
+ .align 2, 0
+_080E28F4: .4byte gBattleAnimArgs
+_080E28F8:
+ ldr r0, _080E2928 @ =gTasks
+ lsls r4, r1, 2
+ adds r4, r1
+ lsls r4, 3
+ adds r4, r0
+ ldrh r0, [r2, 0x2]
+ strh r0, [r4, 0x8]
+ ldrb r0, [r2]
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r4, 0x26]
+ ldr r2, _080E292C @ =gUnknown_83FF65C
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080E2930 @ =sub_80E2934
+ str r0, [r4]
+_080E2920:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2928: .4byte gTasks
+_080E292C: .4byte gUnknown_83FF65C
+_080E2930: .4byte sub_80E2934
+ thumb_func_end sub_80E28DC
+
+ thumb_func_start sub_80E2934
+sub_80E2934: @ 80E2934
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080E2974 @ =gTasks
+ adds r4, r0, r1
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E298E
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r1, [r4, 0xC]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E297C
+ ldr r2, _080E2978 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0x2
+ b _080E298C
+ .align 2, 0
+_080E2974: .4byte gTasks
+_080E2978: .4byte gSprites
+_080E297C:
+ ldr r2, _080E29D4 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _080E29D8 @ =0x0000fffe
+_080E298C:
+ strh r1, [r0, 0x24]
+_080E298E:
+ adds r0, r4, 0
+ bl sub_8076308
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _080E29EA
+ ldr r2, _080E29D4 @ =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]
+ ldrh r0, [r4, 0x8]
+ subs r0, 0x1
+ strh r0, [r4, 0x8]
+ lsls r0, 16
+ cmp r0, 0
+ beq _080E29E4
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _080E29DC @ =gTasks
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _080E29E0 @ =gUnknown_83FF65C
+ bl sub_80762D0
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0xC]
+ b _080E29EA
+ .align 2, 0
+_080E29D4: .4byte gSprites
+_080E29D8: .4byte 0x0000fffe
+_080E29DC: .4byte gTasks
+_080E29E0: .4byte gUnknown_83FF65C
+_080E29E4:
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080E29EA:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2934
+
+ thumb_func_start sub_80E29F0
+sub_80E29F0: @ 80E29F0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _080E2A04 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E2A0C
+ ldr r4, _080E2A08 @ =gBattleAnimAttacker
+ b _080E2A0E
+ .align 2, 0
+_080E2A04: .4byte gBattleAnimArgs
+_080E2A08: .4byte gBattleAnimAttacker
+_080E2A0C:
+ ldr r4, _080E2A4C @ =gBattleAnimTarget
+_080E2A0E:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8076B2C
+ strh r0, [r5, 0x22]
+ movs r1, 0x22
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x7
+ bgt _080E2A32
+ movs r0, 0x8
+ strh r0, [r5, 0x22]
+_080E2A32:
+ movs r2, 0
+ strh r2, [r5, 0x2E]
+ ldr r1, _080E2A50 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x30]
+ strh r2, [r5, 0x32]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x34]
+ ldr r0, _080E2A54 @ =sub_80E2A58
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2A4C: .4byte gBattleAnimTarget
+_080E2A50: .4byte gBattleAnimArgs
+_080E2A54: .4byte sub_80E2A58
+ thumb_func_end sub_80E29F0
+
+ thumb_func_start sub_80E2A58
+sub_80E2A58: @ 80E2A58
+ push {lr}
+ adds r3, r0, 0
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ movs r2, 0x30
+ ldrsh r1, [r3, r2]
+ cmp r0, r1
+ blt _080E2AAC
+ movs r0, 0
+ strh r0, [r3, 0x2E]
+ ldrh r1, [r3, 0x32]
+ adds r1, 0x1
+ movs r0, 0x1
+ ands r1, r0
+ strh r1, [r3, 0x32]
+ movs r0, 0x3E
+ adds r0, r3
+ mov r12, r0
+ lsls r1, 2
+ ldrb r2, [r0]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ movs r2, 0x32
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ beq _080E2AAC
+ ldrh r0, [r3, 0x34]
+ subs r0, 0x1
+ strh r0, [r3, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bne _080E2AAC
+ adds r0, r3, 0
+ bl DestroyAnimSprite
+_080E2AAC:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2A58
+
+ thumb_func_start sub_80E2AB0
+sub_80E2AB0: @ 80E2AB0
+ push {lr}
+ adds r3, r0, 0
+ ldr r0, _080E2ADC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E2AE0
+ ldrb r2, [r3, 0x3]
+ lsls r1, r2, 26
+ lsrs r1, 27
+ movs r0, 0x8
+ orrs r1, r0
+ lsls r1, 1
+ subs r0, 0x47
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x3]
+ movs r0, 0x64
+ strh r0, [r3, 0x20]
+ movs r0, 0x1
+ b _080E2AE6
+ .align 2, 0
+_080E2ADC: .4byte gBattleAnimArgs
+_080E2AE0:
+ movs r0, 0x8C
+ strh r0, [r3, 0x20]
+ ldr r0, _080E2AF4 @ =0x0000ffff
+_080E2AE6:
+ strh r0, [r3, 0x3C]
+ movs r0, 0x38
+ strh r0, [r3, 0x22]
+ ldr r0, _080E2AF8 @ =sub_80E2AFC
+ str r0, [r3, 0x1C]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2AF4: .4byte 0x0000ffff
+_080E2AF8: .4byte sub_80E2AFC
+ thumb_func_end sub_80E2AB0
+
+ thumb_func_start sub_80E2AFC
+sub_80E2AFC: @ 80E2AFC
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x8
+ bls _080E2B0A
+ b _080E2CDC
+_080E2B0A:
+ lsls r0, 2
+ ldr r1, _080E2B14 @ =_080E2B18
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E2B14: .4byte _080E2B18
+ .align 2, 0
+_080E2B18:
+ .4byte _080E2B3C
+ .4byte _080E2B6E
+ .4byte _080E2B80
+ .4byte _080E2BC0
+ .4byte _080E2BD2
+ .4byte _080E2C10
+ .4byte _080E2C74
+ .4byte _080E2C94
+ .4byte _080E2CBA
+_080E2B3C:
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ lsls r0, 1
+ ldrh r1, [r4, 0x22]
+ subs r1, r0
+ strh r1, [r4, 0x22]
+ ldrh r2, [r4, 0x30]
+ movs r0, 0x1
+ ands r0, r2
+ cmp r0, 0
+ beq _080E2B5E
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ ldrh r0, [r4, 0x20]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+_080E2B5E:
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ beq _080E2B6C
+ b _080E2CDC
+_080E2B6C:
+ b _080E2CAE
+_080E2B6E:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ beq _080E2B7E
+ b _080E2CDC
+_080E2B7E:
+ b _080E2CAE
+_080E2B80:
+ ldrh r2, [r4, 0x30]
+ adds r2, 0x1
+ strh r2, [r4, 0x30]
+ movs r3, 0x3C
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 1
+ adds r0, r1
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r3, _080E2BBC @ =gSineTable
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ ldrh r1, [r4, 0x3C]
+ muls r0, r1
+ strh r0, [r4, 0x24]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0xC
+ beq _080E2BB8
+ b _080E2CDC
+_080E2BB8:
+ b _080E2CAE
+ .align 2, 0
+_080E2BBC: .4byte gSineTable
+_080E2BC0:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ beq _080E2BD0
+ b _080E2CDC
+_080E2BD0:
+ b _080E2CAE
+_080E2BD2:
+ ldrh r2, [r4, 0x30]
+ adds r2, 0x1
+ strh r2, [r4, 0x30]
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 1
+ adds r1, r0
+ ldrh r0, [r4, 0x22]
+ subs r0, r1
+ strh r0, [r4, 0x22]
+ ldr r3, _080E2C0C @ =gSineTable
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ ldrh r1, [r4, 0x3C]
+ muls r0, r1
+ strh r0, [r4, 0x24]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0xC
+ bne _080E2CDC
+ b _080E2CB2
+ .align 2, 0
+_080E2C0C: .4byte gSineTable
+_080E2C10:
+ ldrh r2, [r4, 0x30]
+ adds r2, 0x1
+ strh r2, [r4, 0x30]
+ movs r3, 0x3C
+ ldrsh r1, [r4, r3]
+ lsls r0, r1, 1
+ adds r0, r1
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r3, _080E2C68 @ =gSineTable
+ movs r0, 0x30
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ ldrh r1, [r4, 0x3C]
+ muls r0, r1
+ strh r0, [r4, 0x24]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0xF
+ bne _080E2C5C
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x10
+ ldr r3, _080E2C6C @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _080E2C70 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+_080E2C5C:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x12
+ bne _080E2CDC
+ b _080E2CAE
+ .align 2, 0
+_080E2C68: .4byte gSineTable
+_080E2C6C: .4byte 0x000003ff
+_080E2C70: .4byte 0xfffffc00
+_080E2C74:
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 1
+ ldrh r0, [r4, 0x20]
+ adds r1, r0
+ strh r1, [r4, 0x20]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bne _080E2CDC
+ b _080E2CAE
+_080E2C94:
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ lsls r0, 1
+ ldrh r3, [r4, 0x20]
+ adds r0, r3
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bne _080E2CDC
+_080E2CAE:
+ movs r0, 0
+ strh r0, [r4, 0x30]
+_080E2CB2:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080E2CDC
+_080E2CBA:
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 1
+ adds r1, r0
+ ldrh r0, [r4, 0x20]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080E2CDC
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E2CDC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2AFC
+
+ thumb_func_start sub_80E2CE4
+sub_80E2CE4: @ 80E2CE4
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080E2D34 @ =gTasks
+ adds r6, r1, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x26]
+ bl sub_8075290
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x1
+ bne _080E2D44
+ ldr r5, _080E2D38 @ =gBattleAnimAttacker
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8074480
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r1, [r5]
+ movs r0, 0x2
+ eors r0, r1
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ ble _080E2D3C
+ strh r7, [r6, 0x24]
+ b _080E2D64
+ .align 2, 0
+_080E2D34: .4byte gTasks
+_080E2D38: .4byte gBattleAnimAttacker
+_080E2D3C:
+ ldr r0, _080E2D40 @ =0x0000ffff
+ b _080E2D62
+ .align 2, 0
+_080E2D40: .4byte 0x0000ffff
+_080E2D44:
+ ldr r0, _080E2D58 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E2D60
+ ldr r0, _080E2D5C @ =0x0000ffff
+ b _080E2D62
+ .align 2, 0
+_080E2D58: .4byte gBattleAnimAttacker
+_080E2D5C: .4byte 0x0000ffff
+_080E2D60:
+ movs r0, 0x1
+_080E2D62:
+ strh r0, [r6, 0x24]
+_080E2D64:
+ ldr r0, _080E2D70 @ =sub_80E2D74
+ str r0, [r6]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2D70: .4byte sub_80E2D74
+ thumb_func_end sub_80E2CE4
+
+ thumb_func_start sub_80E2D74
+sub_80E2D74: @ 80E2D74
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _080E2D98 @ =gTasks
+ adds r3, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x8
+ bls _080E2D8E
+ b _080E2F08
+_080E2D8E:
+ lsls r0, 2
+ ldr r1, _080E2D9C @ =_080E2DA0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E2D98: .4byte gTasks
+_080E2D9C: .4byte _080E2DA0
+ .align 2, 0
+_080E2DA0:
+ .4byte _080E2DC4
+ .4byte _080E2DD6
+ .4byte _080E2E08
+ .4byte _080E2E38
+ .4byte _080E2E5E
+ .4byte _080E2E88
+ .4byte _080E2E98
+ .4byte _080E2EB8
+ .4byte _080E2EF0
+_080E2DC4:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ beq _080E2DD4
+ b _080E2F08
+_080E2DD4:
+ b _080E2EE0
+_080E2DD6:
+ ldr r2, _080E2E04 @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r2, 0x24
+ ldrsh r0, [r3, r2]
+ lsls r2, r0, 1
+ adds r2, r0
+ ldrh r0, [r1, 0x24]
+ subs r0, r2
+ strh r0, [r1, 0x24]
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ beq _080E2E02
+ b _080E2F08
+_080E2E02:
+ b _080E2EE0
+ .align 2, 0
+_080E2E04: .4byte gSprites
+_080E2E08:
+ ldr r2, _080E2E34 @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0x24
+ ldrsh r2, [r3, r0]
+ lsls r0, r2, 1
+ adds r0, r2
+ ldrh r2, [r1, 0x24]
+ adds r0, r2
+ strh r0, [r1, 0x24]
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080E2F08
+ b _080E2EE0
+ .align 2, 0
+_080E2E34: .4byte gSprites
+_080E2E38:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _080E2F08
+ movs r0, 0
+ strh r0, [r3, 0xA]
+ ldrh r1, [r3, 0xC]
+ movs r2, 0xC
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _080E2EE4
+ adds r0, r1, 0x1
+ strh r0, [r3, 0xC]
+ movs r0, 0x1
+ strh r0, [r3, 0x8]
+ b _080E2F08
+_080E2E5E:
+ ldr r2, _080E2E84 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r1, [r3, 0x24]
+ ldrh r2, [r0, 0x24]
+ adds r1, r2
+ strh r1, [r0, 0x24]
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ bne _080E2F08
+ b _080E2EE0
+ .align 2, 0
+_080E2E84: .4byte gSprites
+_080E2E88:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _080E2F08
+ b _080E2EE0
+_080E2E98:
+ ldr r2, _080E2EB4 @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r0, 0x24
+ ldrsh r2, [r3, r0]
+ lsls r2, 2
+ ldrh r0, [r1, 0x24]
+ subs r0, r2
+ b _080E2ED0
+ .align 2, 0
+_080E2EB4: .4byte gSprites
+_080E2EB8:
+ ldr r2, _080E2EEC @ =gSprites
+ movs r1, 0x26
+ ldrsh r0, [r3, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ movs r2, 0x24
+ ldrsh r0, [r3, r2]
+ lsls r0, 2
+ ldrh r2, [r1, 0x24]
+ adds r0, r2
+_080E2ED0:
+ strh r0, [r1, 0x24]
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x5
+ bne _080E2F08
+_080E2EE0:
+ movs r0, 0
+ strh r0, [r3, 0xA]
+_080E2EE4:
+ ldrh r0, [r3, 0x8]
+ adds r0, 0x1
+ strh r0, [r3, 0x8]
+ b _080E2F08
+ .align 2, 0
+_080E2EEC: .4byte gSprites
+_080E2EF0:
+ ldr r2, _080E2F10 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ movs r1, 0
+ strh r1, [r0, 0x24]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080E2F08:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2F10: .4byte gSprites
+ thumb_func_end sub_80E2D74
+
+ thumb_func_start sub_80E2F14
+sub_80E2F14: @ 80E2F14
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080E2F30 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E2F38
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8075160
+ ldr r0, _080E2F34 @ =gBattleAnimAttacker
+ b _080E2F3A
+ .align 2, 0
+_080E2F30: .4byte gBattleAnimArgs
+_080E2F34: .4byte gBattleAnimAttacker
+_080E2F38:
+ ldr r0, _080E2F90 @ =gBattleAnimTarget
+_080E2F3A:
+ ldrb r0, [r0]
+ strh r0, [r4, 0x3C]
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E2F5E
+ ldrb r0, [r4, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x10
+ orrs r1, r0
+ strb r1, [r4, 0x3]
+_080E2F5E:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8076884
+ movs r2, 0x3
+ ands r2, r0
+ lsls r2, 2
+ ldrb r3, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ adds r0, r1, 0
+ ands r0, r3
+ orrs r0, r2
+ strb r0, [r4, 0x5]
+ ldrb r0, [r4, 0x1]
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r4, 0x1]
+ ldr r0, _080E2F94 @ =sub_80E2F98
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E2F90: .4byte gBattleAnimTarget
+_080E2F94: .4byte sub_80E2F98
+ thumb_func_end sub_80E2F14
+
+ thumb_func_start sub_80E2F98
+sub_80E2F98: @ 80E2F98
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080E2FA6
+ b _080E3196
+_080E2FA6:
+ lsls r0, 2
+ ldr r1, _080E2FB0 @ =_080E2FB4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E2FB0: .4byte _080E2FB4
+ .align 2, 0
+_080E2FB4:
+ .4byte _080E2FC8
+ .4byte _080E30C8
+ .4byte _080E3130
+ .4byte _080E3144
+ .4byte _080E3190
+_080E2FC8:
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x5
+ bhi _080E2FF8
+ lsls r0, 2
+ ldr r1, _080E2FDC @ =_080E2FE0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E2FDC: .4byte _080E2FE0
+ .align 2, 0
+_080E2FE0:
+ .4byte _080E2FFC
+ .4byte _080E3018
+ .4byte _080E303A
+ .4byte _080E3056
+ .4byte _080E2FFC
+ .4byte _080E307C
+_080E2FF8:
+ movs r0, 0
+ strh r0, [r4, 0x3A]
+_080E2FFC:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x5
+ bl sub_8076B2C
+ subs r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ b _080E3070
+_080E3018:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x5
+ bl sub_8076B2C
+ subs r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl sub_8076B2C
+ adds r0, 0x4
+ b _080E3076
+_080E303A:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x4
+ bl sub_8076B2C
+ adds r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ b _080E3070
+_080E3056:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x4
+ bl sub_8076B2C
+ adds r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+_080E3070:
+ bl sub_8076B2C
+ subs r0, 0x4
+_080E3076:
+ lsls r0, 16
+ lsrs r1, r0, 16
+ b _080E309C
+_080E307C:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r1, r0, 24
+_080E309C:
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x4
+ bne _080E30A8
+ movs r0, 0x18
+ b _080E30B2
+_080E30A8:
+ cmp r0, 0x5
+ bne _080E30B0
+ movs r0, 0x6
+ b _080E30B2
+_080E30B0:
+ movs r0, 0xC
+_080E30B2:
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x20]
+ strh r0, [r4, 0x30]
+ strh r5, [r4, 0x32]
+ ldrh r0, [r4, 0x22]
+ strh r0, [r4, 0x34]
+ strh r1, [r4, 0x36]
+ adds r0, r4, 0
+ bl obj_translate_based_on_private_1_2_3_4
+ b _080E3188
+_080E30C8:
+ adds r0, r4, 0
+ bl sub_80755E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080E3196
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ beq _080E3100
+ cmp r0, 0x5
+ beq _080E3120
+ ldrh r0, [r4, 0x24]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ movs r1, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r1, [r4, 0x26]
+ strh r1, [r4, 0x24]
+ strh r1, [r4, 0x2E]
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ b _080E3118
+_080E3100:
+ ldrh r0, [r4, 0x24]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1
+ movs r1, 0
+ strh r0, [r4, 0x20]
+ ldrh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x22]
+ adds r0, r2
+ strh r0, [r4, 0x22]
+ strh r1, [r4, 0x26]
+ strh r1, [r4, 0x24]
+ strh r1, [r4, 0x38]
+_080E3118:
+ ldrh r0, [r4, 0x3A]
+ adds r0, 0x1
+ strh r0, [r4, 0x3A]
+ b _080E3196
+_080E3120:
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ movs r1, 0x10
+ strh r1, [r4, 0x30]
+ strh r0, [r4, 0x32]
+ movs r0, 0x3
+ strh r0, [r4, 0x38]
+ b _080E3196
+_080E3130:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _080E3196
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ b _080E3196
+_080E3144:
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E3156
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x1
+ strh r0, [r4, 0x30]
+ b _080E315C
+_080E3156:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+_080E315C:
+ ldrh r1, [r4, 0x32]
+ lsls r1, 8
+ ldrh r0, [r4, 0x30]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x20
+ bne _080E3196
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_080E3188:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ b _080E3196
+_080E3190:
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E3196:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E2F98
+
+ thumb_func_start sub_80E319C
+sub_80E319C: @ 80E319C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ subs r0, r1
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ muls r0, r1
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ adds r5, r0, 0
+ strh r5, [r4, 0x24]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ movs r2, 0x30
+ ldrsh r1, [r4, r2]
+ subs r0, r1
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ muls r0, r1
+ movs r2, 0x36
+ ldrsh r1, [r4, r2]
+ bl __divsi3
+ adds r3, r0, 0
+ strh r3, [r4, 0x26]
+ ldrh r1, [r4, 0x38]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E31FA
+ ldr r0, _080E3218 @ =gUnknown_83FF180
+ ldrh r1, [r4, 0x20]
+ adds r1, r5
+ lsls r1, 16
+ asrs r1, 16
+ ldrh r2, [r4, 0x22]
+ adds r2, r3
+ lsls r2, 16
+ asrs r2, 16
+ movs r3, 0x5
+ bl CreateSprite
+_080E31FA:
+ movs r0, 0x38
+ ldrsh r1, [r4, r0]
+ movs r2, 0x36
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _080E320C
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E320C:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E3218: .4byte gUnknown_83FF180
+ thumb_func_end sub_80E319C
+
+ thumb_func_start sub_80E321C
+sub_80E321C: @ 80E321C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080E3250 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8074480
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E3258
+ ldr r2, _080E3254 @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x20]
+ ldrh r0, [r2]
+ subs r0, r1, r0
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r2, 0x4]
+ subs r1, r0
+ b _080E3266
+ .align 2, 0
+_080E3250: .4byte gBattleAnimTarget
+_080E3254: .4byte gBattleAnimArgs
+_080E3258:
+ ldr r2, _080E328C @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x20]
+ ldrh r0, [r2]
+ adds r0, r1, r0
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r2, 0x4]
+ adds r1, r0
+_080E3266:
+ strh r1, [r5, 0x32]
+ adds r3, r2, 0
+ ldrh r1, [r5, 0x22]
+ ldrh r2, [r3, 0x2]
+ adds r2, r1, r2
+ strh r2, [r5, 0x30]
+ ldrh r0, [r3, 0x6]
+ adds r1, r0
+ strh r1, [r5, 0x34]
+ ldrh r0, [r3, 0x8]
+ strh r0, [r5, 0x36]
+ ldrh r0, [r5, 0x2E]
+ strh r0, [r5, 0x20]
+ strh r2, [r5, 0x22]
+ ldr r0, _080E3290 @ =sub_80E319C
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E328C: .4byte gBattleAnimArgs
+_080E3290: .4byte sub_80E319C
+ thumb_func_end sub_80E321C
+
+ thumb_func_start sub_80E3294
+sub_80E3294: @ 80E3294
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r2, r5, 0
+ ldr r0, _080E32D8 @ =gTasks
+ mov r9, r0
+ lsls r7, r6, 2
+ adds r0, r7, r6
+ lsls r0, 3
+ mov r8, r0
+ mov r4, r8
+ add r4, r9
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E32DC
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80758E0
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ b _080E3328
+ .align 2, 0
+_080E32D8: .4byte gTasks
+_080E32DC:
+ cmp r0, 0x1
+ bne _080E3334
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x60
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0xC]
+ subs r0, 0xD
+ strh r0, [r4, 0xC]
+ movs r2, 0xA
+ ldrsh r1, [r4, r2]
+ movs r0, 0xC
+ ldrsh r2, [r4, r0]
+ adds r0, r5, 0
+ movs r3, 0
+ bl obj_id_set_rotscale
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bne _080E3360
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ adds r0, r5, 0
+ bl sub_8075980
+ ldr r1, _080E3330 @ =gSprites
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r1
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+_080E3328:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E3360
+ .align 2, 0
+_080E3330: .4byte gSprites
+_080E3334:
+ ldr r0, _080E336C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0
+ bl LoadBattleMonGfxAndAnimate
+ adds r3, r7, 0
+ mov r4, r9
+ movs r1, 0xF
+ mov r2, r8
+ adds r0, r4, r2
+ adds r0, 0x26
+ movs r2, 0
+_080E334C:
+ strh r2, [r0]
+ subs r0, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bge _080E334C
+ adds r0, r3, r6
+ lsls r0, 3
+ adds r0, r4
+ ldr r1, _080E3370 @ =sub_80E3374
+ str r1, [r0]
+_080E3360:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E336C: .4byte gBattleAnimAttacker
+_080E3370: .4byte sub_80E3374
+ thumb_func_end sub_80E3294
+
+ thumb_func_start sub_80E3374
+sub_80E3374: @ 80E3374
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r1, _080E33A0 @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r5, [r4, r0]
+ cmp r5, 0x1
+ beq _080E33D8
+ cmp r5, 0x1
+ bgt _080E33A4
+ cmp r5, 0
+ beq _080E33AE
+ b _080E34C6
+ .align 2, 0
+_080E33A0: .4byte gTasks
+_080E33A4:
+ cmp r5, 0x2
+ beq _080E3444
+ cmp r5, 0x3
+ beq _080E3480
+ b _080E34C6
+_080E33AE:
+ ldr r0, _080E33D0 @ =gSprites
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, _080E33D4 @ =0x0000ff38
+ strh r0, [r1, 0x26]
+ movs r0, 0xC8
+ strh r0, [r1, 0x24]
+ adds r1, 0x3E
+ ldrb r2, [r1]
+ subs r0, 0xCD
+ ands r0, r2
+ strb r0, [r1]
+ strh r5, [r4, 0x1C]
+ b _080E3472
+ .align 2, 0
+_080E33D0: .4byte gSprites
+_080E33D4: .4byte 0x0000ff38
+_080E33D8:
+ ldrh r1, [r4, 0x1C]
+ adds r1, 0x70
+ movs r5, 0
+ strh r1, [r4, 0x1C]
+ ldr r2, _080E343C @ =gSprites
+ lsls r0, r3, 4
+ adds r0, r3
+ lsls r0, 2
+ adds r2, r0, r2
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r3, [r2, 0x26]
+ adds r1, r3
+ strh r1, [r2, 0x26]
+ movs r1, 0x22
+ ldrsh r0, [r2, r1]
+ movs r3, 0x26
+ ldrsh r1, [r2, r3]
+ adds r0, r1
+ movs r1, 0x20
+ negs r1, r1
+ cmp r0, r1
+ blt _080E3408
+ strh r5, [r2, 0x24]
+_080E3408:
+ movs r1, 0x26
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ ble _080E3412
+ strh r5, [r2, 0x26]
+_080E3412:
+ movs r3, 0x26
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _080E34C6
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x76
+ bl PlaySE12WithPanning
+ ldr r1, _080E3440 @ =0xfffff800
+ adds r0, r1, 0
+ ldrh r2, [r4, 0x1C]
+ adds r0, r2
+ strh r0, [r4, 0x1C]
+ b _080E3472
+ .align 2, 0
+_080E343C: .4byte gSprites
+_080E3440: .4byte 0xfffff800
+_080E3444:
+ ldrh r0, [r4, 0x1C]
+ subs r0, 0x70
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080E3454
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+_080E3454:
+ ldr r0, _080E347C @ =gSprites
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldrh r2, [r4, 0x1C]
+ lsls r2, 16
+ asrs r2, 24
+ ldrh r0, [r1, 0x26]
+ subs r0, r2
+ strh r0, [r1, 0x26]
+ movs r3, 0x1C
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ bne _080E34C6
+_080E3472:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E34C6
+ .align 2, 0
+_080E347C: .4byte gSprites
+_080E3480:
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x70
+ strh r0, [r4, 0x1C]
+ ldr r2, _080E34CC @ =gSprites
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r2
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r2, [r1, 0x26]
+ adds r0, r2
+ strh r0, [r1, 0x26]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080E34A4
+ movs r0, 0
+ strh r0, [r1, 0x26]
+_080E34A4:
+ movs r3, 0x26
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _080E34C6
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x76
+ bl PlaySE12WithPanning
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_080E34C6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E34CC: .4byte gSprites
+ thumb_func_end sub_80E3374
+
+ thumb_func_start sub_80E34D0
+sub_80E34D0: @ 80E34D0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080E34F4 @ =gBattleAnimTarget
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E34FC
+ ldrb r0, [r4]
+ bl sub_807685C
+ subs r0, 0x2
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldr r4, _080E34F8 @ =0x0000ff70
+ b _080E350C
+ .align 2, 0
+_080E34F4: .4byte gBattleAnimTarget
+_080E34F8: .4byte 0x0000ff70
+_080E34FC:
+ ldrb r0, [r4]
+ bl sub_807685C
+ adds r0, 0x2
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldr r4, _080E3528 @ =0x0000ffa0
+_080E350C:
+ ldr r0, _080E352C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ strh r4, [r5, 0x26]
+ ldr r0, _080E3530 @ =sub_80E3534
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E3528: .4byte 0x0000ffa0
+_080E352C: .4byte gBattleAnimTarget
+_080E3530: .4byte sub_80E3534
+ thumb_func_end sub_80E34D0
+
+ thumb_func_start sub_80E3534
+sub_80E3534: @ 80E3534
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _080E3542
+ b _080E365E
+_080E3542:
+ lsls r0, 2
+ ldr r1, _080E354C @ =_080E3550
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E354C: .4byte _080E3550
+ .align 2, 0
+_080E3550:
+ .4byte _080E3564
+ .4byte _080E3588
+ .4byte _080E35C8
+ .4byte _080E35F8
+ .4byte _080E3624
+_080E3564:
+ ldrh r0, [r4, 0x26]
+ adds r0, 0xA
+ strh r0, [r4, 0x26]
+ lsls r0, 16
+ cmp r0, 0
+ blt _080E365E
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xC6
+ bl PlaySE12WithPanning
+ movs r0, 0
+ strh r0, [r4, 0x26]
+ b _080E361C
+_080E3588:
+ ldrh r1, [r4, 0x30]
+ adds r1, 0x4
+ movs r5, 0
+ strh r1, [r4, 0x30]
+ ldr r2, _080E35C4 @ =gSineTable
+ movs r3, 0x30
+ ldrsh r0, [r4, r3]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x7F
+ ble _080E365E
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xC6
+ bl PlaySE12WithPanning
+ strh r5, [r4, 0x30]
+ strh r5, [r4, 0x26]
+ b _080E361C
+ .align 2, 0
+_080E35C4: .4byte gSineTable
+_080E35C8:
+ ldrh r1, [r4, 0x30]
+ adds r1, 0x6
+ movs r3, 0
+ strh r1, [r4, 0x30]
+ ldr r2, _080E35F4 @ =gSineTable
+ movs r5, 0x30
+ ldrsh r0, [r4, r5]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 20
+ negs r0, r0
+ strh r0, [r4, 0x26]
+ lsls r1, 16
+ asrs r1, 16
+ cmp r1, 0x7F
+ ble _080E365E
+ strh r3, [r4, 0x30]
+ strh r3, [r4, 0x26]
+ b _080E361C
+ .align 2, 0
+_080E35F4: .4byte gSineTable
+_080E35F8:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080E365E
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xB9
+ bl PlaySE12WithPanning
+ movs r0, 0
+ strh r0, [r4, 0x30]
+_080E361C:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080E365E
+_080E3624:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _080E365E
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x32]
+ adds r1, 0x1
+ strh r1, [r4, 0x32]
+ movs r0, 0x1
+ ands r1, r0
+ adds r3, r4, 0
+ adds r3, 0x3E
+ lsls r1, 2
+ ldrb r2, [r3]
+ subs r0, 0x6
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x7
+ bne _080E365E
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E365E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E3534
+
+ thumb_func_start sub_80E3664
+sub_80E3664: @ 80E3664
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r0, 0x1
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ lsls r0, 16
+ lsrs r1, r0, 16
+ str r1, [sp]
+ asrs r6, r0, 16
+ cmp r6, 0
+ blt _080E36A6
+ movs r0, 0x1
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ lsls r0, 16
+ lsrs r1, r0, 16
+ mov r9, r1
+ asrs r1, r0, 16
+ cmp r1, 0
+ bge _080E36B4
+ lsls r0, r6, 4
+ adds r0, r6
+ lsls r0, 2
+ ldr r1, _080E36B0 @ =gSprites
+ adds r0, r1
+ bl obj_delete_but_dont_free_vram
+_080E36A6:
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+ b _080E37BA
+ .align 2, 0
+_080E36B0: .4byte gSprites
+_080E36B4:
+ ldr r4, _080E3744 @ =gSprites
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r5, r0, r4
+ ldrh r0, [r5, 0x24]
+ adds r0, 0x18
+ movs r1, 0
+ strh r0, [r5, 0x24]
+ lsls r0, r6, 4
+ adds r0, r6
+ lsls r0, 2
+ adds r6, r0, r4
+ ldrh r0, [r6, 0x24]
+ subs r0, 0x18
+ strh r0, [r6, 0x24]
+ strh r1, [r5, 0x2E]
+ strh r1, [r6, 0x2E]
+ strh r1, [r5, 0x30]
+ strh r1, [r6, 0x30]
+ strh r1, [r5, 0x32]
+ strh r1, [r6, 0x32]
+ movs r0, 0x10
+ strh r0, [r5, 0x34]
+ ldr r0, _080E3748 @ =0x0000fff0
+ strh r0, [r6, 0x34]
+ strh r1, [r5, 0x36]
+ movs r0, 0x80
+ strh r0, [r6, 0x36]
+ movs r0, 0x18
+ strh r0, [r5, 0x38]
+ strh r0, [r6, 0x38]
+ strh r7, [r5, 0x3A]
+ strh r7, [r6, 0x3A]
+ strh r1, [r5, 0x3C]
+ strh r1, [r6, 0x3C]
+ ldr r2, _080E374C @ =gTasks
+ lsls r3, r7, 2
+ adds r0, r3, r7
+ lsls r0, 3
+ adds r0, r2
+ movs r1, 0x2
+ strh r1, [r0, 0x8]
+ ldr r0, _080E3750 @ =gUnknown_2024018
+ ldr r1, [r0]
+ ldr r0, _080E3754 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ mov r12, r4
+ mov r10, r2
+ mov r8, r3
+ cmp r0, 0
+ bne _080E3758
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ adds r2, r6, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ b _080E376E
+ .align 2, 0
+_080E3744: .4byte gSprites
+_080E3748: .4byte 0x0000fff0
+_080E374C: .4byte gTasks
+_080E3750: .4byte gUnknown_2024018
+_080E3754: .4byte gBattleAnimTarget
+_080E3758:
+ adds r1, r5, 0
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ movs r2, 0x4
+ orrs r0, r2
+ strb r0, [r1]
+ adds r1, r6, 0
+ adds r1, 0x3E
+ ldrb r0, [r1]
+ orrs r0, r2
+ strb r0, [r1]
+_080E376E:
+ mov r1, r9
+ lsls r0, r1, 16
+ asrs r0, 16
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ mov r0, r12
+ adds r4, r2, r0
+ ldrb r1, [r4, 0x1]
+ movs r3, 0xD
+ negs r3, r3
+ adds r0, r3, 0
+ ands r0, r1
+ strb r0, [r4, 0x1]
+ ldr r1, [sp]
+ lsls r0, r1, 16
+ asrs r0, 16
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ mov r0, r12
+ adds r4, r1, r0
+ ldrb r0, [r4, 0x1]
+ ands r3, r0
+ strb r3, [r4, 0x1]
+ mov r3, r12
+ adds r3, 0x1C
+ adds r2, r3
+ ldr r0, _080E37CC @ =sub_80E37FC
+ str r0, [r2]
+ adds r1, r3
+ str r0, [r1]
+ mov r1, r8
+ adds r0, r1, r7
+ lsls r0, 3
+ add r0, r10
+ ldr r1, _080E37D0 @ =sub_80E37D4
+ str r1, [r0]
+_080E37BA:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E37CC: .4byte sub_80E37FC
+_080E37D0: .4byte sub_80E37D4
+ thumb_func_end sub_80E3664
+
+ thumb_func_start sub_80E37D4
+sub_80E37D4: @ 80E37D4
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _080E37F8 @ =gTasks
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E37F2
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080E37F2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E37F8: .4byte gTasks
+ thumb_func_end sub_80E37D4
+
+ thumb_func_start sub_80E37FC
+sub_80E37FC: @ 80E37FC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E3846
+ movs r0, 0
+ strh r0, [r4, 0x30]
+ ldr r0, _080E3870 @ =gUnknown_2024018
+ ldr r1, [r0]
+ ldr r0, _080E3874 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ ldr r1, [r1]
+ lsls r0, 2
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E3846
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r1, r2, 29
+ lsrs r1, 31
+ movs r0, 0x1
+ eors r1, r0
+ ands r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_080E3846:
+ ldrh r0, [r4, 0x34]
+ ldrh r1, [r4, 0x36]
+ adds r0, r1
+ movs r5, 0
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x36]
+ movs r2, 0x36
+ ldrsh r0, [r4, r2]
+ movs r2, 0x38
+ ldrsh r1, [r4, r2]
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080E3878
+ cmp r0, 0x1
+ beq _080E3890
+ b _080E38CE
+ .align 2, 0
+_080E3870: .4byte gUnknown_2024018
+_080E3874: .4byte gBattleAnimTarget
+_080E3878:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3C
+ bne _080E38CE
+ strh r5, [r4, 0x32]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _080E38CE
+_080E3890:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ cmp r0, 0
+ ble _080E38CE
+ strh r5, [r4, 0x32]
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x2
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ cmp r0, 0
+ bge _080E38CE
+ ldr r3, _080E38D4 @ =gTasks
+ movs r2, 0x3C
+ ldrsh r1, [r4, r2]
+ 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 obj_delete_but_dont_free_vram
+_080E38CE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E38D4: .4byte gTasks
+ thumb_func_end sub_80E37FC
+
+ thumb_func_start sub_80E38D8
+sub_80E38D8: @ 80E38D8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r3, _080E3924 @ =gBattleAnimArgs
+ movs r2, 0
+ strh r2, [r3, 0xE]
+ ldr r1, _080E3928 @ =gUnknown_2037EFE
+ ldrb r0, [r1]
+ ldrb r1, [r1]
+ adds r0, r1, 0
+ subs r0, 0x3D
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r1, 0
+ cmp r0, 0x1E
+ bhi _080E38FC
+ movs r0, 0x1
+ strh r0, [r3, 0xE]
+_080E38FC:
+ adds r0, r2, 0
+ subs r0, 0x5C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x6C
+ bhi _080E390C
+ movs r0, 0x2
+ strh r0, [r3, 0xE]
+_080E390C:
+ lsls r0, r1, 24
+ lsrs r0, 24
+ cmp r0, 0xC8
+ bls _080E3918
+ movs r0, 0x3
+ strh r0, [r3, 0xE]
+_080E3918:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E3924: .4byte gBattleAnimArgs
+_080E3928: .4byte gUnknown_2037EFE
+ thumb_func_end sub_80E38D8
+
+ thumb_func_start sub_80E392C
+sub_80E392C: @ 80E392C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _080E395C @ =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x4
+ bls _080E3952
+ b _080E3E6C
+_080E3952:
+ lsls r0, 2
+ ldr r1, _080E3960 @ =_080E3964
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E395C: .4byte gTasks
+_080E3960: .4byte _080E3964
+ .align 2, 0
+_080E3964:
+ .4byte _080E3978
+ .4byte _080E3A2C
+ .4byte _080E3BEC
+ .4byte _080E3D0C
+ .4byte _080E3D90
+_080E3978:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080E39C4 @ =gTasks
+ mov r2, r8
+ lsls r4, r2, 2
+ adds r0, r4, r2
+ lsls r0, 3
+ adds r6, r0, r1
+ movs r3, 0x80
+ lsls r3, 4
+ adds r0, r3, 0
+ ldrh r1, [r6, 0xA]
+ adds r0, r1
+ strh r0, [r6, 0xA]
+ ldr r0, _080E39C8 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _080E39D0
+ ldr r2, _080E39CC @ =gSprites
+ lsls r3, r7, 4
+ adds r1, r3, r7
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r6, 0xA]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r4, [r1, 0x24]
+ adds r0, r4
+ strh r0, [r1, 0x24]
+ b _080E39EA
+ .align 2, 0
+_080E39C4: .4byte gTasks
+_080E39C8: .4byte gBattleAnimAttacker
+_080E39CC: .4byte gSprites
+_080E39D0:
+ ldr r3, _080E3A24 @ =gSprites
+ lsls r4, r7, 4
+ adds r2, r4, r7
+ lsls r2, 2
+ adds r2, r3
+ ldrh r1, [r6, 0xA]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ adds r2, r3, 0
+ adds r3, r4, 0
+_080E39EA:
+ ldr r1, _080E3A28 @ =gTasks
+ mov r0, r9
+ add r0, r8
+ lsls r0, 3
+ adds r4, r0, r1
+ ldrb r0, [r4, 0xA]
+ strh r0, [r4, 0xA]
+ adds r1, r3, r7
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r1, 0x24]
+ ldrh r1, [r1, 0x20]
+ adds r0, r1
+ lsls r0, 16
+ movs r1, 0x80
+ lsls r1, 14
+ adds r0, r1
+ movs r1, 0x98
+ lsls r1, 17
+ cmp r0, r1
+ bhi _080E3A16
+ b _080E3E6C
+_080E3A16:
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E3E6C
+ .align 2, 0
+_080E3A24: .4byte gSprites
+_080E3A28: .4byte gTasks
+_080E3A2C:
+ ldr r4, _080E3A90 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E3ACC
+ ldr r7, _080E3A94 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _080E3A98 @ =gPlayerParty
+ adds r0, r5
+ movs r1, 0
+ bl GetMonData
+ mov r10, r0
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0x1
+ bl GetMonData
+ mov r9, r0
+ ldr r0, _080E3A9C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldrb r2, [r4]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080E3AA0
+ lsls r0, r2, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r5, r0, 16
+ b _080E3AA2
+ .align 2, 0
+_080E3A90: .4byte gBattleAnimAttacker
+_080E3A94: .4byte gBattlerPartyIndexes
+_080E3A98: .4byte gPlayerParty
+_080E3A9C: .4byte gUnknown_2024018
+_080E3AA0:
+ ldrh r5, [r1, 0x2]
+_080E3AA2:
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ ldr r2, _080E3AC8 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r7, 0
+ movs r6, 0x88
+ lsls r6, 1
+ b _080E3B54
+ .align 2, 0
+_080E3AC8: .4byte gSprites
+_080E3ACC:
+ ldr r7, _080E3B24 @ =gBattlerPartyIndexes
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _080E3B28 @ =gEnemyParty
+ adds r0, r5
+ movs r1, 0
+ bl GetMonData
+ mov r10, r0
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0x1
+ bl GetMonData
+ mov r9, r0
+ ldr r0, _080E3B2C @ =gUnknown_2024018
+ ldr r0, [r0]
+ ldrb r2, [r4]
+ ldr r1, [r0]
+ lsls r0, r2, 2
+ adds r1, r0, r1
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _080E3B30
+ lsls r0, r2, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ muls r0, r6
+ adds r0, r5
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r5, r0, 16
+ b _080E3B32
+ .align 2, 0
+_080E3B24: .4byte gBattlerPartyIndexes
+_080E3B28: .4byte gEnemyParty
+_080E3B2C: .4byte gUnknown_2024018
+_080E3B30:
+ ldrh r5, [r1, 0x2]
+_080E3B32:
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ ldr r2, _080E3BD0 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r7, 0x1
+ ldr r6, _080E3BD4 @ =0x0000ffe0
+_080E3B54:
+ ldr r0, _080E3BD8 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r3, r6, 16
+ asrs r3, 16
+ str r0, [sp]
+ str r4, [sp, 0x4]
+ mov r2, r10
+ str r2, [sp, 0x8]
+ mov r4, r9
+ str r4, [sp, 0xC]
+ ldr r4, _080E3BDC @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ str r0, [sp, 0x10]
+ movs r0, 0
+ str r0, [sp, 0x14]
+ adds r0, r5, 0
+ adds r1, r7, 0
+ movs r2, 0
+ bl sub_80768D0
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _080E3BE0 @ =gUnknown_2024018
+ ldr r1, [r0]
+ ldrb r0, [r4]
+ ldr r1, [r1]
+ lsls r0, 2
+ adds r0, r1
+ ldrh r0, [r0, 0x2]
+ cmp r0, 0
+ beq _080E3BBE
+ ldr r1, _080E3BD0 @ =gSprites
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0, 0x5]
+ lsrs r0, 4
+ lsls r0, 4
+ movs r2, 0x80
+ lsls r2, 1
+ adds r1, r2, 0
+ orrs r0, r1
+ ldr r3, _080E3BE4 @ =0x00007fff
+ movs r1, 0x10
+ movs r2, 0x6
+ bl BlendPalette
+_080E3BBE:
+ ldr r0, _080E3BE8 @ =gTasks
+ mov r3, r8
+ lsls r1, r3, 2
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ strh r5, [r1, 0x26]
+ b _080E3D82
+ .align 2, 0
+_080E3BD0: .4byte gSprites
+_080E3BD4: .4byte 0x0000ffe0
+_080E3BD8: .4byte gBattleAnimTarget
+_080E3BDC: .4byte gBattleAnimAttacker
+_080E3BE0: .4byte gUnknown_2024018
+_080E3BE4: .4byte 0x00007fff
+_080E3BE8: .4byte gTasks
+_080E3BEC:
+ ldr r1, _080E3C38 @ =gTasks
+ mov r0, r8
+ lsls r4, r0, 2
+ adds r0, r4, r0
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrh r0, [r6, 0x26]
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r1, 0x80
+ lsls r1, 4
+ adds r0, r1, 0
+ ldrh r2, [r6, 0xA]
+ adds r0, r2
+ strh r0, [r6, 0xA]
+ ldr r0, _080E3C3C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _080E3C44
+ ldr r3, _080E3C40 @ =gSprites
+ lsls r4, r5, 4
+ adds r2, r4, r5
+ lsls r2, 2
+ adds r2, r3
+ ldrh r1, [r6, 0xA]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r2, 0x24]
+ subs r0, r1
+ strh r0, [r2, 0x24]
+ adds r2, r3, 0
+ adds r3, r4, 0
+ b _080E3C5A
+ .align 2, 0
+_080E3C38: .4byte gTasks
+_080E3C3C: .4byte gBattleAnimAttacker
+_080E3C40: .4byte gSprites
+_080E3C44:
+ ldr r2, _080E3CA8 @ =gSprites
+ lsls r3, r5, 4
+ adds r1, r3, r5
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r6, 0xA]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r4, [r1, 0x24]
+ adds r0, r4
+ strh r0, [r1, 0x24]
+_080E3C5A:
+ ldr r1, _080E3CAC @ =gTasks
+ mov r0, r9
+ add r0, r8
+ lsls r0, 3
+ adds r6, r0, r1
+ ldrb r0, [r6, 0xA]
+ strh r0, [r6, 0xA]
+ adds r1, r3, r5
+ lsls r1, 2
+ adds r1, r2
+ ldrh r0, [r1, 0x24]
+ ldrh r1, [r1, 0x20]
+ adds r0, r1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ movs r1, 0x24
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _080E3CDA
+ ldr r0, _080E3CB0 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E3CB8
+ lsls r4, r5, 16
+ asrs r4, 16
+ ldr r0, _080E3CB4 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bge _080E3CDA
+ b _080E3CCE
+ .align 2, 0
+_080E3CA8: .4byte gSprites
+_080E3CAC: .4byte gTasks
+_080E3CB0: .4byte gBattleAnimAttacker
+_080E3CB4: .4byte gBattleAnimTarget
+_080E3CB8:
+ lsls r4, r5, 16
+ asrs r4, 16
+ ldr r0, _080E3CFC @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ ble _080E3CDA
+_080E3CCE:
+ ldrh r0, [r6, 0x24]
+ adds r0, 0x1
+ strh r0, [r6, 0x24]
+ ldr r1, _080E3D00 @ =gBattleAnimArgs
+ ldr r0, _080E3D04 @ =0x0000ffff
+ strh r0, [r1, 0xE]
+_080E3CDA:
+ lsls r0, r5, 16
+ movs r2, 0x80
+ lsls r2, 14
+ adds r0, r2
+ movs r1, 0x98
+ lsls r1, 17
+ cmp r0, r1
+ bhi _080E3CEC
+ b _080E3E6C
+_080E3CEC:
+ ldr r0, _080E3D08 @ =gTasks
+ mov r1, r9
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0
+ strh r0, [r1, 0xA]
+ b _080E3D82
+ .align 2, 0
+_080E3CFC: .4byte gBattleAnimTarget
+_080E3D00: .4byte gBattleAnimArgs
+_080E3D04: .4byte 0x0000ffff
+_080E3D08: .4byte gTasks
+_080E3D0C:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080E3D58 @ =gTasks
+ mov r3, r8
+ lsls r4, r3, 2
+ adds r0, r4, r3
+ lsls r0, 3
+ adds r0, r1
+ ldrh r0, [r0, 0x26]
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 4
+ adds r0, r5
+ lsls r0, 2
+ ldr r5, _080E3D5C @ =gSprites
+ adds r0, r5
+ bl sub_8076B20
+ ldr r0, _080E3D60 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _080E3D64
+ lsls r1, r7, 4
+ adds r1, r7
+ lsls r1, 2
+ adds r1, r5
+ ldrh r0, [r1, 0x20]
+ negs r0, r0
+ subs r0, 0x20
+ strh r0, [r1, 0x24]
+ b _080E3D78
+ .align 2, 0
+_080E3D58: .4byte gTasks
+_080E3D5C: .4byte gSprites
+_080E3D60: .4byte gBattleAnimAttacker
+_080E3D64:
+ lsls r0, r7, 4
+ adds r0, r7
+ lsls r0, 2
+ adds r0, r5
+ ldrh r2, [r0, 0x20]
+ movs r4, 0x88
+ lsls r4, 1
+ adds r1, r4, 0
+ subs r1, r2
+ strh r1, [r0, 0x24]
+_080E3D78:
+ ldr r0, _080E3D8C @ =gTasks
+ mov r1, r9
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+_080E3D82:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _080E3E6C
+ .align 2, 0
+_080E3D8C: .4byte gTasks
+_080E3D90:
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _080E3E04 @ =gTasks
+ mov r0, r8
+ lsls r4, r0, 2
+ adds r0, r4, r0
+ lsls r0, 3
+ adds r2, r0, r1
+ movs r1, 0x80
+ lsls r1, 4
+ adds r0, r1, 0
+ ldrh r3, [r2, 0xA]
+ adds r0, r3
+ strh r0, [r2, 0xA]
+ ldr r0, _080E3E08 @ =gBattleAnimAttacker
+ mov r10, r0
+ ldrb r0, [r0]
+ str r2, [sp, 0x18]
+ bl GetBattlerSide
+ lsls r0, 24
+ mov r9, r4
+ ldr r2, [sp, 0x18]
+ cmp r0, 0
+ bne _080E3E10
+ ldr r1, _080E3E0C @ =gSprites
+ lsls r5, r7, 4
+ adds r0, r5, r7
+ lsls r0, 2
+ adds r6, r0, r1
+ ldrh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 24
+ ldrh r1, [r6, 0x24]
+ adds r0, r1
+ strh r0, [r6, 0x24]
+ movs r2, 0x24
+ ldrsh r4, [r6, r2]
+ movs r3, 0x20
+ ldrsh r0, [r6, r3]
+ adds r4, r0
+ mov r1, r10
+ ldrb r0, [r1]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r5, 0
+ cmp r4, r0
+ blt _080E3E48
+ movs r2, 0
+ strh r2, [r6, 0x24]
+ b _080E3E48
+ .align 2, 0
+_080E3E04: .4byte gTasks
+_080E3E08: .4byte gBattleAnimAttacker
+_080E3E0C: .4byte gSprites
+_080E3E10:
+ ldr r1, _080E3E7C @ =gSprites
+ lsls r5, r7, 4
+ adds r0, r5, r7
+ lsls r0, 2
+ adds r6, r0, r1
+ ldrh r1, [r2, 0xA]
+ lsls r1, 16
+ asrs r1, 24
+ ldrh r0, [r6, 0x24]
+ subs r0, r1
+ strh r0, [r6, 0x24]
+ movs r3, 0x24
+ ldrsh r4, [r6, r3]
+ movs r1, 0x20
+ ldrsh r0, [r6, r1]
+ adds r4, r0
+ mov r2, r10
+ ldrb r0, [r2]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r5, 0
+ cmp r4, r0
+ bgt _080E3E48
+ movs r4, 0
+ strh r4, [r6, 0x24]
+_080E3E48:
+ ldr r1, _080E3E80 @ =gTasks
+ mov r0, r9
+ add r0, r8
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r0, 0xA]
+ strh r1, [r0, 0xA]
+ ldr r1, _080E3E7C @ =gSprites
+ adds r0, r3, r7
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0x24
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _080E3E6C
+ mov r0, r8
+ bl DestroyAnimVisualTask
+_080E3E6C:
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E3E7C: .4byte gSprites
+_080E3E80: .4byte gTasks
+ thumb_func_end sub_80E392C
+
+ thumb_func_start sub_80E3E84
+sub_80E3E84: @ 80E3E84
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _080E3E96
+ cmp r0, 0x1
+ beq _080E3F36
+ b _080E3FB8
+_080E3E96:
+ ldr r0, _080E3F14 @ =gBattleAnimArgs
+ movs r2, 0xE
+ ldrsh r1, [r0, r2]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _080E3F28
+ movs r0, 0x3F
+ bl sub_8073A44
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x73
+ bl PlaySE12WithPanning
+ ldr r0, _080E3F18 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ strh r0, [r4, 0x22]
+ ldr r0, _080E3F1C @ =0x0000ffe0
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x3C]
+ adds r0, 0x1
+ strh r0, [r4, 0x3C]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ ldr r0, _080E3F20 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080E3FB8
+ movs r0, 0x1
+ bl GetAnimBankSpriteId
+ ldr r2, _080E3F24 @ =gSprites
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ adds r1, 0x43
+ ldrb r0, [r1]
+ subs r0, 0x1
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ b _080E3FB8
+ .align 2, 0
+_080E3F14: .4byte gBattleAnimArgs
+_080E3F18: .4byte gBattleAnimTarget
+_080E3F1C: .4byte 0x0000ffe0
+_080E3F20: .4byte gBattleAnimAttacker
+_080E3F24: .4byte gSprites
+_080E3F28:
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ b _080E3FB8
+_080E3F36:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ bl Sin
+ strh r0, [r4, 0x26]
+ ldrh r2, [r4, 0x30]
+ adds r0, r2, 0x5
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7F
+ ble _080E3F6A
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ lsrs r1, r0, 31
+ adds r0, r1
+ asrs r0, 1
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ adds r0, r2, 0
+ subs r0, 0x7A
+ strh r0, [r4, 0x30]
+_080E3F6A:
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2, 0
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldr r0, _080E3F94 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E3F98
+ ldrh r2, [r4, 0x32]
+ lsls r1, r2, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x24]
+ subs r0, r1
+ strh r0, [r4, 0x24]
+ adds r1, r2, 0
+ b _080E3FA4
+ .align 2, 0
+_080E3F94: .4byte gBattleAnimAttacker
+_080E3F98:
+ ldrh r1, [r4, 0x32]
+ lsls r0, r1, 16
+ asrs r0, 24
+ ldrh r2, [r4, 0x24]
+ adds r0, r2
+ strh r0, [r4, 0x24]
+_080E3FA4:
+ movs r0, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x32]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x2
+ bne _080E3FB8
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E3FB8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E3E84
+
+ thumb_func_start sub_80E3FC0
+sub_80E3FC0: @ 80E3FC0
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _080E3FE8 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x26
+ ldrsh r0, [r0, r2]
+ adds r3, r1, 0
+ cmp r0, 0x4
+ bls _080E3FDC
+ b _080E412E
+_080E3FDC:
+ lsls r0, 2
+ ldr r1, _080E3FEC @ =_080E3FF0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080E3FE8: .4byte gTasks
+_080E3FEC: .4byte _080E3FF0
+ .align 2, 0
+_080E3FF0:
+ .4byte _080E4004
+ .4byte _080E4054
+ .4byte _080E40B0
+ .4byte _080E40C8
+ .4byte _080E412E
+_080E4004:
+ ldr r0, _080E4048 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r0, _080E404C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r0, 0
+ ldr r1, _080E4050 @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r1, r0, r1
+ movs r0, 0x6
+ strh r0, [r1, 0x8]
+ cmp r5, r2
+ ble _080E403A
+ negs r0, r0
+ strh r0, [r1, 0x8]
+_080E403A:
+ strh r5, [r1, 0xA]
+ strh r2, [r1, 0xC]
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x1
+ strh r0, [r1, 0x26]
+ b _080E414C
+ .align 2, 0
+_080E4048: .4byte gBattleAnimAttacker
+_080E404C: .4byte gBattleAnimTarget
+_080E4050: .4byte gTasks
+_080E4054:
+ ldr r1, _080E4090 @ =gBattlerSpriteIds
+ ldr r0, _080E4094 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, _080E4098 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r1
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r2, r0, r3
+ ldrh r0, [r2, 0x8]
+ ldrh r3, [r1, 0x24]
+ adds r0, r3
+ strh r0, [r1, 0x24]
+ movs r3, 0x8
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ ble _080E409C
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xC
+ ldrsh r1, [r2, r3]
+ b _080E4122
+ .align 2, 0
+_080E4090: .4byte gBattlerSpriteIds
+_080E4094: .4byte gBattleAnimAttacker
+_080E4098: .4byte gSprites
+_080E409C:
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xC
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bgt _080E414C
+ b _080E4126
+_080E40B0:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r3
+ movs r2, 0x8
+ ldrsh r1, [r0, r2]
+ negs r1, r1
+ strh r1, [r0, 0x8]
+ ldrh r1, [r0, 0x26]
+ adds r1, 0x1
+ strh r1, [r0, 0x26]
+ b _080E414C
+_080E40C8:
+ ldr r1, _080E4108 @ =gBattlerSpriteIds
+ ldr r0, _080E410C @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, _080E4110 @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r1, r0, r1
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r2, r0, r3
+ ldrh r0, [r2, 0x8]
+ ldrh r3, [r1, 0x24]
+ adds r0, r3
+ strh r0, [r1, 0x24]
+ movs r3, 0x8
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bge _080E4114
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xA
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bgt _080E414C
+ b _080E4126
+ .align 2, 0
+_080E4108: .4byte gBattlerSpriteIds
+_080E410C: .4byte gBattleAnimAttacker
+_080E4110: .4byte gSprites
+_080E4114:
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xA
+ ldrsh r1, [r2, r3]
+_080E4122:
+ cmp r0, r1
+ blt _080E414C
+_080E4126:
+ ldrh r0, [r2, 0x26]
+ adds r0, 0x1
+ strh r0, [r2, 0x26]
+ b _080E414C
+_080E412E:
+ ldr r1, _080E4154 @ =gBattlerSpriteIds
+ ldr r0, _080E4158 @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, _080E415C @ =gSprites
+ lsls r0, r2, 4
+ adds r0, r2
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0
+ strh r1, [r0, 0x24]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080E414C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E4154: .4byte gBattlerSpriteIds
+_080E4158: .4byte gBattleAnimAttacker
+_080E415C: .4byte gSprites
+ thumb_func_end sub_80E3FC0
+
+ thumb_func_start sub_80E4160
+sub_80E4160: @ 80E4160
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _080E41C8 @ =gTasks
+ adds r4, r1, r0
+ movs r0, 0
+ bl GetAnimBankSpriteId
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r4, 0xE]
+ ldr r0, _080E41CC @ =gBattleAnimAttacker
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _080E4194
+ movs r1, 0x1
+_080E4194:
+ strh r1, [r4, 0x10]
+ ldr r2, _080E41D0 @ =gSprites
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x22]
+ strh r0, [r4, 0x14]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrh r0, [r0, 0x20]
+ strh r0, [r4, 0x12]
+ strh r5, [r4, 0x1A]
+ strh r5, [r4, 0x1E]
+ movs r0, 0x1
+ strh r0, [r4, 0x1C]
+ strh r5, [r4, 0x20]
+ ldr r0, _080E41D4 @ =sub_80E41D8
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E41C8: .4byte gTasks
+_080E41CC: .4byte gBattleAnimAttacker
+_080E41D0: .4byte gSprites
+_080E41D4: .4byte sub_80E41D8
+ thumb_func_end sub_80E4160
+
+ thumb_func_start sub_80E41D8
+sub_80E41D8: @ 80E41D8
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _080E41FC @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _080E4280
+ cmp r0, 0x1
+ bgt _080E4200
+ cmp r0, 0
+ beq _080E4206
+ b _080E42D6
+ .align 2, 0
+_080E41FC: .4byte gTasks
+_080E4200:
+ cmp r0, 0x2
+ beq _080E42D0
+ b _080E42D6
+_080E4206:
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x8
+ movs r2, 0xFF
+ ands r0, r2
+ strh r0, [r4, 0x1E]
+ ldr r5, _080E4278 @ =gSprites
+ movs r6, 0xE
+ ldrsh r0, [r4, r6]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ ldr r3, _080E427C @ =gSineTable
+ movs r6, 0x1E
+ ldrsh r0, [r4, r6]
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 21
+ strh r0, [r1, 0x24]
+ ldrh r0, [r4, 0x1A]
+ adds r0, 0x2
+ ands r0, r2
+ strh r0, [r4, 0x1A]
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r2, r0, 4
+ adds r2, r0
+ lsls r2, 2
+ adds r2, r5
+ movs r6, 0x1A
+ ldrsh r0, [r4, r6]
+ lsls r0, 1
+ adds r0, r3
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 19
+ ldrh r1, [r4, 0x10]
+ muls r0, r1
+ ldrh r1, [r4, 0x12]
+ adds r0, r1
+ strh r0, [r2, 0x20]
+ movs r6, 0x1A
+ ldrsh r0, [r4, r6]
+ cmp r0, 0
+ bne _080E42D6
+ movs r0, 0xE
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrh r1, [r4, 0x12]
+ strh r1, [r0, 0x20]
+ b _080E42C0
+ .align 2, 0
+_080E4278: .4byte gSprites
+_080E427C: .4byte gSineTable
+_080E4280:
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x8
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x1E]
+ ldr r3, _080E42C8 @ =gSprites
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ ldr r2, _080E42CC @ =gSineTable
+ movs r5, 0x1E
+ ldrsh r0, [r4, r5]
+ lsls r0, 1
+ adds r0, r2
+ ldrh r0, [r0]
+ lsls r0, 16
+ asrs r0, 21
+ strh r0, [r1, 0x24]
+ movs r6, 0x1E
+ ldrsh r2, [r4, r6]
+ cmp r2, 0
+ bne _080E42D6
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ strh r2, [r1, 0x24]
+_080E42C0:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _080E42D6
+ .align 2, 0
+_080E42C8: .4byte gSprites
+_080E42CC: .4byte gSineTable
+_080E42D0:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_080E42D6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E41D8
+
+ thumb_func_start sub_80E42DC
+sub_80E42DC: @ 80E42DC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080E4330 @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ ldrh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ adds r0, r1
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x30]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x14
+ bl Cos
+ strh r0, [r4, 0x24]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ movs r1, 0x14
+ bl Sin
+ strh r0, [r4, 0x26]
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080E4322
+ adds r0, r4, 0
+ bl DestroyAnimSprite
+_080E4322:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E4330: .4byte gBattleAnimTarget
+ thumb_func_end sub_80E42DC
+
+ thumb_func_start sub_80E4334
+sub_80E4334: @ 80E4334
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _080E436C @ =gBattleAnimTarget
+ ldrb r0, [r0]
+ bl GetBattlerSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E4378
+ ldr r2, _080E4370 @ =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]
+ ldr r0, _080E4374 @ =0x0000fff5
+ strh r0, [r4, 0x2E]
+ movs r0, 0xC0
+ strh r0, [r4, 0x30]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ b _080E4392
+ .align 2, 0
+_080E436C: .4byte gBattleAnimTarget
+_080E4370: .4byte gBattleAnimArgs
+_080E4374: .4byte 0x0000fff5
+_080E4378:
+ movs r0, 0xB
+ strh r0, [r4, 0x2E]
+ movs r0, 0xC0
+ strh r0, [r4, 0x30]
+ ldr r1, _080E439C @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ ldrh r2, [r4, 0x20]
+ adds r0, r2
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+_080E4392:
+ ldr r0, _080E43A0 @ =sub_80E42DC
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E439C: .4byte gBattleAnimArgs
+_080E43A0: .4byte sub_80E42DC
+ thumb_func_end sub_80E4334
+
+ thumb_func_start sub_80E43A4
+sub_80E43A4: @ 80E43A4
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _080E43E8 @ =gBattleAnimAttacker
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8074480
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8076B2C
+ strh r0, [r5, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bgt _080E43CE
+ movs r0, 0x10
+ strh r0, [r5, 0x22]
+_080E43CE:
+ movs r0, 0
+ strh r0, [r5, 0x3A]
+ movs r1, 0x10
+ strh r1, [r5, 0x3C]
+ ldr r0, _080E43EC @ =sub_80E43F0
+ str r0, [r5, 0x1C]
+ lsls r1, 8
+ movs r0, 0x52
+ bl SetGpuReg
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E43E8: .4byte gBattleAnimAttacker
+_080E43EC: .4byte sub_80E43F0
+ thumb_func_end sub_80E43A4
+
+ thumb_func_start sub_80E43F0
+sub_80E43F0: @ 80E43F0
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x32
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _080E4468
+ cmp r1, 0x1
+ bgt _080E4406
+ cmp r1, 0
+ beq _080E4410
+ b _080E44E4
+_080E4406:
+ cmp r1, 0x2
+ beq _080E447E
+ cmp r1, 0x3
+ beq _080E44DE
+ b _080E44E4
+_080E4410:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E44E4
+ strh r1, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E443A
+ ldrh r2, [r4, 0x3A]
+ movs r3, 0x3A
+ ldrsh r0, [r4, r3]
+ cmp r0, 0xF
+ bgt _080E4448
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x3A]
+ b _080E4448
+_080E443A:
+ ldrh r2, [r4, 0x3C]
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080E4448
+ subs r0, r2, 0x1
+ strh r0, [r4, 0x3C]
+_080E4448:
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 8
+ ldrh r0, [r4, 0x3A]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _080E44E4
+ b _080E44D6
+_080E4468:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _080E44E4
+ strh r1, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ b _080E44D6
+_080E447E:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _080E44E4
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldrh r1, [r4, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _080E44AA
+ ldrh r2, [r4, 0x3A]
+ movs r3, 0x3A
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _080E44B8
+ subs r0, r2, 0x1
+ strh r0, [r4, 0x3A]
+ b _080E44B8
+_080E44AA:
+ ldrh r2, [r4, 0x3C]
+ movs r3, 0x3C
+ ldrsh r0, [r4, r3]
+ cmp r0, 0xF
+ bgt _080E44B8
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x3C]
+_080E44B8:
+ adds r0, r1, 0x1
+ strh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 8
+ ldrh r0, [r4, 0x3A]
+ orrs r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0x52
+ bl SetGpuReg
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x10
+ bne _080E44E4
+_080E44D6:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ b _080E44E4
+_080E44DE:
+ adds r0, r4, 0
+ bl move_anim_8074EE0
+_080E44E4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E43F0
+
+ thumb_func_start sub_80E44EC
+sub_80E44EC: @ 80E44EC
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _080E4508 @ =gBattleAnimArgs
+ movs r0, 0
+ strh r0, [r2, 0xE]
+ ldr r0, _080E450C @ =gUnknown_2037F00
+ ldrh r1, [r0]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _080E4510
+ movs r0, 0x1
+ b _080E4532
+ .align 2, 0
+_080E4508: .4byte gBattleAnimArgs
+_080E450C: .4byte gUnknown_2037F00
+_080E4510:
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _080E451C
+ movs r0, 0x2
+ b _080E4532
+_080E451C:
+ movs r0, 0x18
+ ands r0, r1
+ cmp r0, 0
+ beq _080E4528
+ movs r0, 0x3
+ b _080E4532
+_080E4528:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _080E4534
+ movs r0, 0x4
+_080E4532:
+ strh r0, [r2, 0xE]
+_080E4534:
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80E44EC
+
+ thumb_func_start sub_80E4540
+sub_80E4540: @ 80E4540
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _080E4578 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldr r0, _080E457C @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl GetAnimBankSpriteId
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r4, 0x26]
+ ldr r2, _080E4580 @ =gUnknown_83FF7A8
+ adds r0, r4, 0
+ bl sub_80762D0
+ ldr r0, _080E4584 @ =sub_80E4588
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E4578: .4byte gTasks
+_080E457C: .4byte gBattleAnimArgs
+_080E4580: .4byte gUnknown_83FF7A8
+_080E4584: .4byte sub_80E4588
+ thumb_func_end sub_80E4540
+
+ thumb_func_start sub_80E4588
+sub_80E4588: @ 80E4588
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r2, _080E45E0 @ =gTasks
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x8]
+ adds r1, r0, 0x1
+ movs r5, 0
+ strh r1, [r3, 0x8]
+ subs r0, 0x10
+ lsls r0, 16
+ lsrs r0, 16
+ adds r6, r2, 0
+ cmp r0, 0x16
+ bhi _080E45EC
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _080E45FC
+ strh r5, [r3, 0xA]
+ ldrh r0, [r3, 0xC]
+ adds r0, 0x1
+ strh r0, [r3, 0xC]
+ movs r5, 0x1
+ ands r0, r5
+ cmp r0, 0
+ bne _080E45EC
+ ldr r2, _080E45E4 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _080E45E8 @ =0x0000ffff
+ strh r1, [r0, 0x24]
+ b _080E45FC
+ .align 2, 0
+_080E45E0: .4byte gTasks
+_080E45E4: .4byte gSprites
+_080E45E8: .4byte 0x0000ffff
+_080E45EC:
+ ldr r2, _080E461C @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ strh r5, [r0, 0x24]
+_080E45FC:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r6
+ bl sub_8076308
+ lsls r0, 24
+ cmp r0, 0
+ bne _080E4614
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_080E4614:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080E461C: .4byte gSprites
+ thumb_func_end sub_80E4588
+
+ .align 2, 0 @ Don't pad with nop.