summaryrefslogtreecommitdiff
path: root/asm/battle_anim_812C144.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_anim_812C144.s')
-rw-r--r--asm/battle_anim_812C144.s13097
1 files changed, 13097 insertions, 0 deletions
diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s
new file mode 100644
index 000000000..bae3d9bc2
--- /dev/null
+++ b/asm/battle_anim_812C144.s
@@ -0,0 +1,13097 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_812C144
+sub_812C144: @ 812C144
+ push {lr}
+ adds r2, r0, 0
+ ldr r1, _0812C168 @ =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 _0812C16C
+ ldrh r0, [r1, 0x4]
+ b _0812C170
+ .align 2, 0
+_0812C168: .4byte gBattleAnimArgs
+_0812C16C:
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+_0812C170:
+ strh r0, [r2, 0x2E]
+ ldrh r0, [r1, 0x8]
+ strh r0, [r2, 0x30]
+ ldr r0, _0812C180 @ =sub_812C184
+ str r0, [r2, 0x1C]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C180: .4byte sub_812C184
+ thumb_func_end sub_812C144
+
+ thumb_func_start sub_812C184
+sub_812C184: @ 812C184
+ push {lr}
+ adds r3, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ ble _0812C1C4
+ 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 _0812C1CA
+_0812C1C4:
+ adds r0, r3, 0
+ bl move_anim_8072740
+_0812C1CA:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812C184
+
+ thumb_func_start sub_812C1D0
+sub_812C1D0: @ 812C1D0
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ lsls r5, 24
+ lsrs r5, 24
+ ldr r6, _0812C21C @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8077ABC
+ 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_8077ABC
+ 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_8046234
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C21C: .4byte gBattleAnimEnemyMonIndex
+ thumb_func_end sub_812C1D0
+
+ thumb_func_start sub_812C220
+sub_812C220: @ 812C220
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r0, 0x5A
+ strh r0, [r4, 0x2E]
+ ldr r0, _0812C258 @ =sub_80782D8
+ str r0, [r4, 0x1C]
+ movs r0, 0x7
+ strh r0, [r4, 0x30]
+ ldr r1, _0812C25C @ =sub_812C268
+ adds r0, r4, 0
+ bl oamt_set_x3A_32
+ ldr r1, _0812C260 @ =REG_BLDCNT
+ movs r2, 0xFD
+ lsls r2, 6
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r2, _0812C264 @ =REG_BLDALPHA
+ ldrh r1, [r4, 0x30]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r0, r1
+ strh r0, [r2]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C258: .4byte sub_80782D8
+_0812C25C: .4byte sub_812C268
+_0812C260: .4byte REG_BLDCNT
+_0812C264: .4byte REG_BLDALPHA
+ thumb_func_end sub_812C220
+
+ thumb_func_start sub_812C268
+sub_812C268: @ 812C268
+ push {lr}
+ adds r3, r0, 0
+ ldr r2, _0812C29C @ =REG_BLDALPHA
+ ldrh r1, [r3, 0x30]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r0, r1
+ strh r0, [r2]
+ ldrh r0, [r3, 0x30]
+ subs r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ cmp r0, 0
+ bge _0812C296
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0812C2A0 @ =sub_812C2A4
+ str r0, [r3, 0x1C]
+_0812C296:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C29C: .4byte REG_BLDALPHA
+_0812C2A0: .4byte sub_812C2A4
+ thumb_func_end sub_812C268
+
+ thumb_func_start sub_812C2A4
+sub_812C2A4: @ 812C2A4
+ push {lr}
+ ldr r1, _0812C2B8 @ =REG_BLDCNT
+ movs r2, 0
+ strh r2, [r1]
+ adds r1, 0x2
+ strh r2, [r1]
+ bl move_anim_8072740
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C2B8: .4byte REG_BLDCNT
+ thumb_func_end sub_812C2A4
+
+ thumb_func_start sub_812C2BC
+sub_812C2BC: @ 812C2BC
+ push {r4-r7,lr}
+ sub sp, 0x4
+ adds r5, r0, 0
+ ldr r4, _0812C348 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r7, r0, 0
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r6, r0, 0
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_8078764
+ 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_80790F0
+ lsls r0, 16
+ movs r1, 0xC0
+ lsls r1, 23
+ adds r0, r1
+ lsrs r4, r0, 16
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812C31A
+ movs r1, 0x80
+ lsls r1, 7
+ adds r0, r4, r1
+ lsls r0, 16
+ lsrs r4, r0, 16
+_0812C31A:
+ movs r3, 0x80
+ lsls r3, 1
+ str r4, [sp]
+ adds r0, r5, 0
+ movs r1, 0
+ adds r2, r3, 0
+ bl sub_8078FDC
+ ldr r0, _0812C34C @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r5, 0x2E]
+ strh r7, [r5, 0x32]
+ strh r6, [r5, 0x36]
+ ldr r0, _0812C350 @ =sub_8078B34
+ str r0, [r5, 0x1C]
+ ldr r1, _0812C354 @ =move_anim_8072740
+ adds r0, r5, 0
+ bl oamt_set_x3A_32
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C348: .4byte gBattleAnimEnemyMonIndex
+_0812C34C: .4byte gBattleAnimArgs
+_0812C350: .4byte sub_8078B34
+_0812C354: .4byte move_anim_8072740
+ thumb_func_end sub_812C2BC
+
+ thumb_func_start sub_812C358
+sub_812C358: @ 812C358
+ ldr r2, _0812C378 @ =REG_BLDCNT
+ movs r3, 0xFD
+ lsls r3, 6
+ adds r1, r3, 0
+ strh r1, [r2]
+ adds r2, 0x2
+ movs r3, 0x80
+ lsls r3, 5
+ adds r1, r3, 0
+ strh r1, [r2]
+ movs r1, 0x4
+ strh r1, [r0, 0x2E]
+ ldr r1, _0812C37C @ =sub_812C380
+ str r1, [r0, 0x1C]
+ bx lr
+ .align 2, 0
+_0812C378: .4byte REG_BLDCNT
+_0812C37C: .4byte sub_812C380
+ thumb_func_end sub_812C358
+
+ thumb_func_start sub_812C380
+sub_812C380: @ 812C380
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r2, _0812C3A0 @ =REG_BLDALPHA
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r0, r1
+ strh r0, [r2]
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _0812C3A4
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ b _0812C3A8
+ .align 2, 0
+_0812C3A0: .4byte REG_BLDALPHA
+_0812C3A4:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+_0812C3A8:
+ strh r0, [r4, 0x2E]
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xF
+ beq _0812C3B6
+ cmp r0, 0x4
+ bne _0812C3BE
+_0812C3B6:
+ ldrh r0, [r4, 0x30]
+ movs r1, 0x1
+ eors r0, r1
+ strh r0, [r4, 0x30]
+_0812C3BE:
+ ldrh r0, [r4, 0x32]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x46
+ ble _0812C3FC
+ ldr r0, _0812C404 @ =REG_BLDCNT
+ movs r1, 0
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ 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, _0812C408 @ =sub_812C40C
+ str r0, [r4, 0x1C]
+_0812C3FC:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C404: .4byte REG_BLDCNT
+_0812C408: .4byte sub_812C40C
+ thumb_func_end sub_812C380
+
+ thumb_func_start sub_812C40C
+sub_812C40C: @ 812C40C
+ 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 _0812C448
+ 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 _0812C448
+ ldr r0, _0812C44C @ =sub_812C450
+ str r0, [r3, 0x1C]
+_0812C448:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C44C: .4byte sub_812C450
+ thumb_func_end sub_812C40C
+
+ thumb_func_start sub_812C450
+sub_812C450: @ 812C450
+ push {lr}
+ adds r2, r0, 0
+ movs r1, 0x34
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x6
+ bhi _0812C4A8
+ lsls r0, 2
+ ldr r1, _0812C468 @ =_0812C46C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0812C468: .4byte _0812C46C
+ .align 2, 0
+_0812C46C:
+ .4byte _0812C488
+ .4byte _0812C488
+ .4byte _0812C492
+ .4byte _0812C492
+ .4byte _0812C4A0
+ .4byte _0812C4A0
+ .4byte _0812C4A8
+_0812C488:
+ movs r1, 0
+ movs r0, 0x1
+ strh r0, [r2, 0x24]
+ strh r1, [r2, 0x26]
+ b _0812C4B0
+_0812C492:
+ ldr r0, _0812C49C @ =0x0000ffff
+ strh r0, [r2, 0x24]
+ movs r0, 0
+ b _0812C4AE
+ .align 2, 0
+_0812C49C: .4byte 0x0000ffff
+_0812C4A0:
+ movs r0, 0
+ strh r0, [r2, 0x24]
+ movs r0, 0x1
+ b _0812C4AE
+_0812C4A8:
+ movs r0, 0
+ strh r0, [r2, 0x24]
+ ldr r0, _0812C4F0 @ =0x0000ffff
+_0812C4AE:
+ strh r0, [r2, 0x26]
+_0812C4B0:
+ ldrh r0, [r2, 0x34]
+ adds r0, 0x1
+ movs r3, 0
+ strh r0, [r2, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ ble _0812C4C2
+ strh r3, [r2, 0x34]
+_0812C4C2:
+ ldrh r0, [r2, 0x36]
+ adds r1, r0, 0x1
+ strh r1, [r2, 0x36]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ ble _0812C4EA
+ movs r0, 0x10
+ strh r0, [r2, 0x2E]
+ strh r3, [r2, 0x30]
+ ldr r1, _0812C4F4 @ =REG_BLDCNT
+ movs r3, 0xFD
+ lsls r3, 6
+ adds r0, r3, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ ldrh r0, [r2, 0x2E]
+ strh r0, [r1]
+ ldr r0, _0812C4F8 @ =sub_812C4FC
+ str r0, [r2, 0x1C]
+_0812C4EA:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C4F0: .4byte 0x0000ffff
+_0812C4F4: .4byte REG_BLDCNT
+_0812C4F8: .4byte sub_812C4FC
+ thumb_func_end sub_812C450
+
+ thumb_func_start sub_812C4FC
+sub_812C4FC: @ 812C4FC
+ push {r4,lr}
+ adds r2, r0, 0
+ ldr r4, _0812C558 @ =REG_BLDALPHA
+ ldrh r1, [r2, 0x2E]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r0, r1
+ strh r0, [r4]
+ ldrh r0, [r2, 0x30]
+ adds r1, r0, 0x1
+ strh r1, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _0812C526
+ ldrh r0, [r2, 0x2E]
+ subs r0, 0x1
+ movs r1, 0
+ strh r0, [r2, 0x2E]
+ strh r1, [r2, 0x30]
+_0812C526:
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bne _0812C53A
+ adds r3, r2, 0
+ adds r3, 0x3E
+ ldrb r0, [r3]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r3]
+_0812C53A:
+ movs r1, 0x2E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ bge _0812C550
+ ldr r1, _0812C55C @ =REG_BLDCNT
+ movs r0, 0
+ strh r0, [r1]
+ strh r0, [r4]
+ adds r0, r2, 0
+ bl move_anim_8072740
+_0812C550:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C558: .4byte REG_BLDALPHA
+_0812C55C: .4byte REG_BLDCNT
+ thumb_func_end sub_812C4FC
+
+ thumb_func_start sub_812C560
+sub_812C560: @ 812C560
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0812C57C @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r0, _0812C580 @ =sub_812C588
+ str r0, [r1]
+ ldr r1, _0812C584 @ =gAnimVisualTaskCount
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_0812C57C: .4byte gTasks
+_0812C580: .4byte sub_812C588
+_0812C584: .4byte gAnimVisualTaskCount
+ thumb_func_end sub_812C560
+
+ thumb_func_start sub_812C588
+sub_812C588: @ 812C588
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_80789BC
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r7, _0812C614 @ =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 _0812C5F8
+ ldr r0, _0812C618 @ =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
+_0812C5D6:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ subs r2, 0x2
+ subs r1, 0x2
+ subs r3, 0x1
+ cmp r3, 0
+ bgt _0812C5D6
+ 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]
+_0812C5F8:
+ ldr r0, _0812C61C @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _0812C620 @ =0x0000ffff
+ cmp r1, r0
+ bne _0812C608
+ adds r0, r4, 0
+ bl DestroyTask
+_0812C608:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C614: .4byte gTasks
+_0812C618: .4byte gPlttBufferFaded
+_0812C61C: .4byte gBattleAnimArgs
+_0812C620: .4byte 0x0000ffff
+ thumb_func_end sub_812C588
+
+ thumb_func_start sub_812C624
+sub_812C624: @ 812C624
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0812C640 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r1, r2
+ ldr r0, _0812C644 @ =sub_812C64C
+ str r0, [r1]
+ ldr r1, _0812C648 @ =gAnimVisualTaskCount
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_0812C640: .4byte gTasks
+_0812C644: .4byte sub_812C64C
+_0812C648: .4byte gAnimVisualTaskCount
+ thumb_func_end sub_812C624
+
+ thumb_func_start sub_812C64C
+sub_812C64C: @ 812C64C
+ 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_80789BC
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r5, _0812C70C @ =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 _0812C6EE
+ ldr r0, _0812C710 @ =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, _0812C714 @ =gPlttBufferUnfaded
+ mov r12, r2
+ lsls r0, r7, 5
+ add r0, r9
+ adds r3, r0, 0
+ adds r3, 0x14
+_0812C6A0:
+ ldrh r0, [r3]
+ strh r0, [r1]
+ subs r3, 0x2
+ subs r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bgt _0812C6A0
+ 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
+_0812C6CA:
+ ldrh r0, [r2]
+ strh r0, [r1]
+ subs r2, 0x2
+ subs r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bgt _0812C6CA
+ 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, _0812C70C @ =gTasks
+ adds r0, r2
+ strh r1, [r0, 0x12]
+_0812C6EE:
+ ldr r0, _0812C718 @ =gBattleAnimArgs
+ ldrh r1, [r0, 0xE]
+ ldr r0, _0812C71C @ =0x0000ffff
+ cmp r1, r0
+ bne _0812C6FE
+ mov r0, r8
+ bl DestroyTask
+_0812C6FE:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C70C: .4byte gTasks
+_0812C710: .4byte gPlttBufferFaded
+_0812C714: .4byte gPlttBufferUnfaded
+_0812C718: .4byte gBattleAnimArgs
+_0812C71C: .4byte 0x0000ffff
+ thumb_func_end sub_812C64C
+
+ thumb_func_start sub_812C720
+sub_812C720: @ 812C720
+ push {r4,r5,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ movs r1, 0x1
+ bl sub_80787B0
+ ldr r0, _0812C784 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ mov r5, sp
+ adds r5, 0x2
+ movs r1, 0
+ mov r2, sp
+ adds r3, r5, 0
+ bl sub_807A3FC
+ ldr r0, _0812C788 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812C754
+ ldr r1, _0812C78C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x4]
+ negs r0, r0
+ strh r0, [r1, 0x4]
+_0812C754:
+ ldr r1, _0812C78C @ =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, _0812C790 @ =0x0000ffce
+ strh r0, [r4, 0x38]
+ adds r0, r4, 0
+ bl sub_80786EC
+ ldr r0, _0812C794 @ =sub_812C798
+ str r0, [r4, 0x1C]
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C784: .4byte gBattleAnimEnemyMonIndex
+_0812C788: .4byte gBattleAnimPlayerMonIndex
+_0812C78C: .4byte gBattleAnimArgs
+_0812C790: .4byte 0x0000ffce
+_0812C794: .4byte sub_812C798
+ thumb_func_end sub_812C720
+
+ thumb_func_start sub_812C798
+sub_812C798: @ 812C798
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8078718
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812C7BA
+ movs r1, 0
+ movs r0, 0x1E
+ strh r0, [r4, 0x2E]
+ strh r1, [r4, 0x30]
+ ldr r0, _0812C7C0 @ =sub_80782D8
+ str r0, [r4, 0x1C]
+ ldr r1, _0812C7C4 @ =sub_812C7C8
+ adds r0, r4, 0
+ bl oamt_set_x3A_32
+_0812C7BA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C7C0: .4byte sub_80782D8
+_0812C7C4: .4byte sub_812C7C8
+ thumb_func_end sub_812C798
+
+ thumb_func_start sub_812C7C8
+sub_812C7C8: @ 812C7C8
+ push {lr}
+ adds r3, r0, 0
+ ldrh r1, [r3, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0812C7F4
+ 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]
+_0812C7F4:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x10
+ bne _0812C808
+ adds r0, r3, 0
+ bl move_anim_8072740
+_0812C808:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812C7C8
+
+ thumb_func_start sub_812C80C
+sub_812C80C: @ 812C80C
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ bl sub_8078650
+ ldr r5, _0812C83C @ =gBattleAnimArgs
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ adds r0, r4, 0
+ bl sub_807867C
+ ldrh r0, [r5, 0x2]
+ ldrh r1, [r4, 0x22]
+ adds r0, r1
+ strh r0, [r4, 0x22]
+ ldr r0, _0812C840 @ =sub_8078600
+ str r0, [r4, 0x1C]
+ ldr r1, _0812C844 @ =move_anim_8072740
+ adds r0, r4, 0
+ bl oamt_set_x3A_32
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C83C: .4byte gBattleAnimArgs
+_0812C840: .4byte sub_8078600
+_0812C844: .4byte move_anim_8072740
+ thumb_func_end sub_812C80C
+
+ thumb_func_start sub_812C848
+sub_812C848: @ 812C848
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0812C8A8
+ adds r0, r4, 0
+ bl sub_8078650
+ ldr r5, _0812C884 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r5, r2]
+ adds r0, r4, 0
+ bl sub_807867C
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812C89C
+ ldr r0, _0812C888 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812C88C
+ ldrh r0, [r5, 0x4]
+ b _0812C8A2
+ .align 2, 0
+_0812C884: .4byte gBattleAnimArgs
+_0812C888: .4byte gBattleAnimPlayerMonIndex
+_0812C88C:
+ 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 _0812C8A6
+_0812C89C:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ negs r0, r0
+_0812C8A2:
+ strh r0, [r4, 0x30]
+ ldrh r0, [r5, 0x6]
+_0812C8A6:
+ strh r0, [r4, 0x32]
+_0812C8A8:
+ 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 _0812C900
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0812C900:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812C848
+
+ thumb_func_start sub_812C908
+sub_812C908: @ 812C908
+ push {lr}
+ adds r2, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0812C91E
+ adds r0, r2, 0
+ bl move_anim_8072740
+_0812C91E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812C908
+
+ thumb_func_start sub_812C924
+sub_812C924: @ 812C924
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _0812C940 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0812C948
+ ldr r1, _0812C944 @ =gBattleAnimArgs
+ movs r0, 0
+ b _0812C94C
+ .align 2, 0
+_0812C940: .4byte gBattleAnimEnemyMonIndex
+_0812C944: .4byte gBattleAnimArgs
+_0812C948:
+ ldr r1, _0812C95C @ =gBattleAnimArgs
+ movs r0, 0x1
+_0812C94C:
+ strh r0, [r1, 0xE]
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C95C: .4byte gBattleAnimArgs
+ thumb_func_end sub_812C924
+
+ thumb_func_start sub_812C960
+sub_812C960: @ 812C960
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _0812C974 @ =gMoveDmgMoveAnim
+ ldr r0, [r0]
+ cmp r0, 0
+ ble _0812C97C
+ ldr r1, _0812C978 @ =gBattleAnimArgs
+ movs r0, 0
+ b _0812C980
+ .align 2, 0
+_0812C974: .4byte gMoveDmgMoveAnim
+_0812C978: .4byte gBattleAnimArgs
+_0812C97C:
+ ldr r1, _0812C98C @ =gBattleAnimArgs
+ movs r0, 0x1
+_0812C980:
+ strh r0, [r1, 0xE]
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C98C: .4byte gBattleAnimArgs
+ thumb_func_end sub_812C960
+
+ thumb_func_start sub_812C990
+sub_812C990: @ 812C990
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _0812C9EC @ =REG_WINOUT
+ ldr r2, _0812C9F0 @ =0x00001f3f
+ adds r0, r2, 0
+ strh r0, [r1]
+ movs r2, 0x80
+ lsls r2, 19
+ ldrh r0, [r2]
+ movs r3, 0x80
+ lsls r3, 8
+ adds r1, r3, 0
+ orrs r0, r1
+ strh r0, [r2]
+ ldr r0, _0812C9F4 @ =gUnknown_030042C4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _0812C9F8 @ =gUnknown_03004240
+ strh r1, [r0]
+ ldr r0, _0812C9FC @ =REG_WIN0H
+ strh r1, [r0]
+ adds r0, 0x4
+ strh r1, [r0]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8078764
+ ldrb r1, [r4, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0812CA00 @ =sub_812CA04
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812C9EC: .4byte REG_WINOUT
+_0812C9F0: .4byte 0x00001f3f
+_0812C9F4: .4byte gUnknown_030042C4
+_0812C9F8: .4byte gUnknown_03004240
+_0812C9FC: .4byte REG_WIN0H
+_0812CA00: .4byte sub_812CA04
+ thumb_func_end sub_812C990
+
+ thumb_func_start sub_812CA04
+sub_812CA04: @ 812CA04
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bhi _0812CAC4
+ lsls r0, 2
+ ldr r1, _0812CA1C @ =_0812CA20
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0812CA1C: .4byte _0812CA20
+ .align 2, 0
+_0812CA20:
+ .4byte _0812CA38
+ .4byte _0812CA56
+ .4byte _0812CA76
+ .4byte _0812CA56
+ .4byte _0812CA96
+ .4byte _0812CAA6
+_0812CA38:
+ 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 _0812CAC4
+ b _0812CA9E
+_0812CA56:
+ 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 _0812CAC4
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ b _0812CA9E
+_0812CA76:
+ 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 _0812CAC4
+ movs r0, 0
+ strh r0, [r4, 0x32]
+ b _0812CA9E
+_0812CA96:
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+_0812CA9E:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _0812CAC4
+_0812CAA6:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0812CAC4
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0812CACC @ =sub_812CAD0
+ str r0, [r4, 0x1C]
+_0812CAC4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812CACC: .4byte sub_812CAD0
+ thumb_func_end sub_812CA04
+
+ thumb_func_start sub_812CAD0
+sub_812CAD0: @ 812CAD0
+ push {r4,lr}
+ ldr r2, _0812CAF4 @ =REG_WINOUT
+ ldr r3, _0812CAF8 @ =0x00003f3f
+ adds r1, r3, 0
+ strh r1, [r2]
+ movs r3, 0x80
+ lsls r3, 19
+ ldrh r1, [r3]
+ movs r4, 0x80
+ lsls r4, 8
+ adds r2, r4, 0
+ eors r1, r2
+ strh r1, [r3]
+ bl move_anim_8072740
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812CAF4: .4byte REG_WINOUT
+_0812CAF8: .4byte 0x00003f3f
+ thumb_func_end sub_812CAD0
+
+ thumb_func_start sub_812CAFC
+sub_812CAFC: @ 812CAFC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _0812CB70 @ =gBattleAnimArgs
+ movs r1, 0x6
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _0812CB28
+ ldr r4, _0812CB74 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+_0812CB28:
+ 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, _0812CB78 @ =0x000003ff
+ adds r0, r4, 0
+ ands r1, r0
+ ldr r0, _0812CB7C @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r5, 0x4]
+ movs r1, 0x4
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _0812CB84
+ 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, _0812CB80 @ =0x0000fff4
+ strh r0, [r5, 0x24]
+ movs r0, 0x2
+ b _0812CB8A
+ .align 2, 0
+_0812CB70: .4byte gBattleAnimArgs
+_0812CB74: .4byte gBattleAnimPlayerMonIndex
+_0812CB78: .4byte 0x000003ff
+_0812CB7C: .4byte 0xfffffc00
+_0812CB80: .4byte 0x0000fff4
+_0812CB84:
+ movs r0, 0xC
+ strh r0, [r5, 0x24]
+ ldr r0, _0812CBA8 @ =0x0000fffe
+_0812CB8A:
+ strh r0, [r5, 0x30]
+ ldr r1, _0812CBAC @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x8]
+ strh r0, [r5, 0x2E]
+ movs r2, 0x34
+ ldrsh r0, [r5, r2]
+ cmp r0, 0xFF
+ beq _0812CB9E
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x34]
+_0812CB9E:
+ ldr r0, _0812CBB0 @ =sub_812CBB4
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812CBA8: .4byte 0x0000fffe
+_0812CBAC: .4byte gBattleAnimArgs
+_0812CBB0: .4byte sub_812CBB4
+ thumb_func_end sub_812CAFC
+
+ thumb_func_start sub_812CBB4
+sub_812CBB4: @ 812CBB4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r2, [r4, 0x32]
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0812CBF2
+ ldrh r0, [r4, 0x30]
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ strh r0, [r4, 0x24]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0812CC12
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x32]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0812CC12
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8076F98
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xDE
+ bl PlaySE1WithPanning
+ b _0812CC12
+_0812CBF2:
+ 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 _0812CC04
+ negs r0, r0
+_0812CC04:
+ cmp r0, 0xC
+ bne _0812CC12
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ subs r0, r2, 0x1
+ strh r0, [r4, 0x32]
+_0812CC12:
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0812CC20
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0812CC20:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812CBB4
+
+ thumb_func_start sub_812CC28
+sub_812CC28: @ 812CC28
+ 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_812CAFC
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812CC28
+
+ thumb_func_start sub_812CC44
+sub_812CC44: @ 812CC44
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812CC7A
+ ldr r1, _0812CC88 @ =REG_WININ
+ ldr r2, _0812CC8C @ =0x00001f3f
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _0812CC90 @ =gUnknown_03004200
+ ldr r2, _0812CC94 @ =0x000098f0
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r1, _0812CC98 @ =gUnknown_03004244
+ movs r0, 0xA0
+ strh r0, [r1]
+ ldr r1, _0812CC9C @ =REG_WIN1H
+ ldr r0, _0812CCA0 @ =gUnknown_030042C4
+ ldrh r0, [r0]
+ strh r0, [r1]
+ adds r1, 0x4
+ ldr r0, _0812CCA4 @ =gUnknown_03004240
+ ldrh r0, [r0]
+ strh r0, [r1]
+_0812CC7A:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812CC88: .4byte REG_WININ
+_0812CC8C: .4byte 0x00001f3f
+_0812CC90: .4byte gUnknown_03004200
+_0812CC94: .4byte 0x000098f0
+_0812CC98: .4byte gUnknown_03004244
+_0812CC9C: .4byte REG_WIN1H
+_0812CCA0: .4byte gUnknown_030042C4
+_0812CCA4: .4byte gUnknown_03004240
+ thumb_func_end sub_812CC44
+
+ thumb_func_start sub_812CCA8
+sub_812CCA8: @ 812CCA8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812CCCA
+ ldr r1, _0812CCD8 @ =REG_WININ
+ ldr r2, _0812CCDC @ =0x00003f3f
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r0, _0812CCE0 @ =gUnknown_03004200
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _0812CCE4 @ =gUnknown_03004244
+ strh r1, [r0]
+_0812CCCA:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812CCD8: .4byte REG_WININ
+_0812CCDC: .4byte 0x00003f3f
+_0812CCE0: .4byte gUnknown_03004200
+_0812CCE4: .4byte gUnknown_03004244
+ thumb_func_end sub_812CCA8
+
+ thumb_func_start sub_812CCE8
+sub_812CCE8: @ 812CCE8
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _0812CCFC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _0812CD04
+ ldr r4, _0812CD00 @ =gBattleAnimPlayerMonIndex
+ b _0812CD06
+ .align 2, 0
+_0812CCFC: .4byte gBattleAnimArgs
+_0812CD00: .4byte gBattleAnimPlayerMonIndex
+_0812CD04:
+ ldr r4, _0812CD58 @ =gBattleAnimEnemyMonIndex
+_0812CD06:
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8077ABC
+ 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_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ ldr r2, _0812CD5C @ =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 _0812CD3E
+ movs r3, 0x1
+_0812CD3E:
+ 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, _0812CD60 @ =sub_812CD64
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812CD58: .4byte gBattleAnimEnemyMonIndex
+_0812CD5C: .4byte gBattleAnimArgs
+_0812CD60: .4byte sub_812CD64
+ thumb_func_end sub_812CCE8
+
+ thumb_func_start sub_812CD64
+sub_812CD64: @ 812CD64
+ 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, _0812CDAC @ =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 _0812CDB0
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r3, 0x36
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ bge _0812CDC2
+ adds r0, r2, 0
+ bl move_anim_8072740
+ b _0812CDC2
+ .align 2, 0
+_0812CDAC: .4byte gSineTable
+_0812CDB0:
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r3, 0x36
+ ldrsh r1, [r2, r3]
+ cmp r0, r1
+ ble _0812CDC2
+ adds r0, r2, 0
+ bl move_anim_8072740
+_0812CDC2:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812CD64
+
+ thumb_func_start sub_812CDC8
+sub_812CDC8: @ 812CDC8
+ 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, _0812CDE8 @ =gTasks
+ adds r5, r1, r0
+ ldr r0, _0812CDEC @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _0812CDF4
+ ldr r4, _0812CDF0 @ =gBattleAnimPlayerMonIndex
+ b _0812CDF6
+ .align 2, 0
+_0812CDE8: .4byte gTasks
+_0812CDEC: .4byte gBattleAnimArgs
+_0812CDF0: .4byte gBattleAnimPlayerMonIndex
+_0812CDF4:
+ ldr r4, _0812CE3C @ =gBattleAnimEnemyMonIndex
+_0812CDF6:
+ ldrb r0, [r4]
+ bl sub_8077FC0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r0, [r4]
+ bl GetBankIdentity_permutated
+ 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 _0812CE20
+ strh r2, [r5, 0xC]
+_0812CE20:
+ ldrh r0, [r5, 0x8]
+ strh r0, [r5, 0xE]
+ movs r0, 0x8
+ strh r0, [r5, 0x10]
+ ldr r1, _0812CE40 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x12]
+ strh r2, [r5, 0x14]
+ strh r2, [r5, 0x16]
+ cmp r7, 0x1
+ bne _0812CE48
+ ldr r0, _0812CE44 @ =gUnknown_030042C0
+ b _0812CE4A
+ .align 2, 0
+_0812CE3C: .4byte gBattleAnimEnemyMonIndex
+_0812CE40: .4byte gBattleAnimArgs
+_0812CE44: .4byte gUnknown_030042C0
+_0812CE48:
+ ldr r0, _0812CE68 @ =gUnknown_03004288
+_0812CE4A:
+ 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 _0812CE6C
+ strh r3, [r5, 0x1E]
+ ldrh r3, [r5, 0x18]
+ b _0812CE70
+ .align 2, 0
+_0812CE68: .4byte gUnknown_03004288
+_0812CE6C:
+ strh r2, [r5, 0x1E]
+ ldrh r3, [r5, 0x1A]
+_0812CE70:
+ 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 _0812CEA6
+ ldr r4, _0812CEB0 @ =gUnknown_03004DE0
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r0, r4
+ mov r12, r0
+_0812CE8C:
+ 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 _0812CE8C
+_0812CEA6:
+ cmp r7, 0x1
+ bne _0812CEB8
+ ldr r0, _0812CEB4 @ =REG_BG1HOFS
+ b _0812CEBA
+ .align 2, 0
+_0812CEB0: .4byte gUnknown_03004DE0
+_0812CEB4: .4byte REG_BG1HOFS
+_0812CEB8:
+ ldr r0, _0812CEE4 @ =REG_BG2HOFS
+_0812CEBA:
+ str r0, [sp]
+ ldr r0, _0812CEE8 @ =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 sub_80895F8
+ ldr r0, _0812CEEC @ =sub_812CEF0
+ str r0, [r5]
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812CEE4: .4byte REG_BG2HOFS
+_0812CEE8: .4byte 0xa2600001
+_0812CEEC: .4byte sub_812CEF0
+ thumb_func_end sub_812CDC8
+
+ thumb_func_start sub_812CEF0
+sub_812CEF0: @ 812CEF0
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _0812CF40 @ =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 _0812CF18
+ strh r2, [r4, 0x8]
+_0812CF18:
+ ldrh r1, [r4, 0x10]
+ movs r2, 0x10
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _0812CF44
+ 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 _0812CF48
+ strh r2, [r4, 0xA]
+ movs r0, 0x1
+ strh r0, [r4, 0x26]
+ b _0812CF48
+ .align 2, 0
+_0812CF40: .4byte gTasks
+_0812CF44:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x10]
+_0812CF48:
+ ldrh r0, [r4, 0x14]
+ adds r0, 0x1
+ strh r0, [r4, 0x14]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _0812CF74
+ movs r0, 0
+ strh r0, [r4, 0x14]
+ movs r1, 0
+ movs r2, 0x16
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ bne _0812CF66
+ movs r1, 0x1
+_0812CF66:
+ strh r1, [r4, 0x16]
+ cmp r1, 0
+ beq _0812CF70
+ ldrh r0, [r4, 0x18]
+ b _0812CF72
+_0812CF70:
+ ldrh r0, [r4, 0x1A]
+_0812CF72:
+ strh r0, [r4, 0x20]
+_0812CF74:
+ ldrh r1, [r4, 0x8]
+ lsls r3, r1, 16
+ asrs r1, r3, 16
+ movs r2, 0xA
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bge _0812CFA8
+ ldr r5, _0812D000 @ =gUnknown_03004DE0
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+_0812CF8A:
+ 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 _0812CF8A
+_0812CFA8:
+ ldrh r1, [r4, 0xA]
+ lsls r3, r1, 16
+ asrs r1, r3, 16
+ movs r2, 0xE
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bgt _0812CFDC
+ ldr r5, _0812D000 @ =gUnknown_03004DE0
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r6, r5, r0
+_0812CFBE:
+ 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 _0812CFBE
+_0812CFDC:
+ movs r3, 0x26
+ ldrsh r0, [r4, r3]
+ cmp r0, 0
+ beq _0812CFF8
+ movs r1, 0x1C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _0812CFF2
+ ldr r1, _0812D004 @ =gUnknown_03004DC0
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+_0812CFF2:
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_0812CFF8:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812D000: .4byte gUnknown_03004DE0
+_0812D004: .4byte gUnknown_03004DC0
+ thumb_func_end sub_812CEF0
+
+ thumb_func_start sub_812D008
+sub_812D008: @ 812D008
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _0812D05C @ =gTasks
+ adds r4, r0
+ movs r5, 0
+ strh r5, [r4, 0x8]
+ strh r5, [r4, 0xA]
+ ldr r6, _0812D060 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r6]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0xC]
+ ldrb r0, [r6]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0xE]
+ movs r0, 0x20
+ strh r0, [r4, 0x10]
+ ldr r0, _0812D064 @ =0x0000ffec
+ strh r0, [r4, 0x12]
+ strh r5, [r4, 0x14]
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _0812D068 @ =sub_812D06C
+ str r0, [r4]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812D05C: .4byte gTasks
+_0812D060: .4byte gBattleAnimPlayerMonIndex
+_0812D064: .4byte 0x0000ffec
+_0812D068: .4byte sub_812D06C
+ thumb_func_end sub_812D008
+
+ thumb_func_start sub_812D06C
+sub_812D06C: @ 812D06C
+ 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, _0812D098 @ =gTasks
+ adds r6, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x5
+ bls _0812D08C
+ b _0812D246
+_0812D08C:
+ lsls r0, 2
+ ldr r1, _0812D09C @ =_0812D0A0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0812D098: .4byte gTasks
+_0812D09C: .4byte _0812D0A0
+ .align 2, 0
+_0812D0A0:
+ .4byte _0812D0B8
+ .4byte _0812D178
+ .4byte _0812D1A6
+ .4byte _0812D1BA
+ .4byte _0812D1D0
+ .4byte _0812D238
+_0812D0B8:
+ movs r0, 0xC
+ ldrsh r2, [r6, r0]
+ ldrh r1, [r6, 0xA]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0812D0CE
+ movs r1, 0x10
+ ldrsh r0, [r6, r1]
+ subs r0, r2, r0
+ b _0812D0D4
+_0812D0CE:
+ movs r1, 0x10
+ ldrsh r0, [r6, r1]
+ adds r0, r2, r0
+_0812D0D4:
+ lsls r0, 16
+ lsrs r1, r0, 16
+ ldrh r2, [r6, 0x12]
+ ldrh r0, [r6, 0xE]
+ adds r2, r0
+ ldr r0, _0812D168 @ =gBattleAnimSpriteTemplate_83D7220
+ 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_8076F98
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xBA
+ bl PlaySE12WithPanning
+ cmp r4, 0x40
+ beq _0812D138
+ ldr r5, _0812D16C @ =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, _0812D170 @ =SpriteCallbackDummy
+ str r0, [r1]
+_0812D138:
+ ldrh r1, [r6, 0xA]
+ movs r4, 0x1
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0812D150
+ ldrh r0, [r6, 0x10]
+ subs r0, 0x6
+ strh r0, [r6, 0x10]
+ ldrh r0, [r6, 0x12]
+ subs r0, 0x6
+ strh r0, [r6, 0x12]
+_0812D150:
+ ldrh r1, [r6, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _0812D174 @ =gUnknown_08402400
+ adds r0, r6, 0
+ bl sub_80798F4
+ ldrh r0, [r6, 0xA]
+ adds r0, 0x1
+ strh r0, [r6, 0xA]
+ strh r4, [r6, 0x8]
+ b _0812D246
+ .align 2, 0
+_0812D168: .4byte gBattleAnimSpriteTemplate_83D7220
+_0812D16C: .4byte gSprites
+_0812D170: .4byte SpriteCallbackDummy
+_0812D174: .4byte gUnknown_08402400
+_0812D178:
+ adds r0, r6, 0
+ bl sub_807992C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _0812D246
+ movs r2, 0xA
+ ldrsh r1, [r6, r2]
+ cmp r1, 0x6
+ bne _0812D198
+ movs r0, 0x8
+ strh r0, [r6, 0x14]
+ movs r0, 0x3
+ strh r0, [r6, 0x8]
+ b _0812D246
+_0812D198:
+ cmp r1, 0x2
+ bgt _0812D19E
+ movs r0, 0xA
+_0812D19E:
+ strh r0, [r6, 0x14]
+ movs r0, 0x2
+ strh r0, [r6, 0x8]
+ b _0812D246
+_0812D1A6:
+ ldrh r0, [r6, 0x14]
+ movs r2, 0x14
+ ldrsh r1, [r6, r2]
+ cmp r1, 0
+ beq _0812D1B6
+ subs r0, 0x1
+ strh r0, [r6, 0x14]
+ b _0812D246
+_0812D1B6:
+ strh r1, [r6, 0x8]
+ b _0812D246
+_0812D1BA:
+ ldrh r1, [r6, 0x14]
+ movs r2, 0x14
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ beq _0812D1CA
+ subs r0, r1, 0x1
+ strh r0, [r6, 0x14]
+ b _0812D246
+_0812D1CA:
+ movs r0, 0x4
+ strh r0, [r6, 0x8]
+ b _0812D246
+_0812D1D0:
+ movs r5, 0
+ movs r7, 0
+ ldr r3, _0812D22C @ =gSprites
+ movs r0, 0x1C
+ adds r0, r3
+ mov r8, r0
+_0812D1DC:
+ 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, _0812D230 @ =gBattleAnimSpriteTemplate_83D7220
+ cmp r1, r0
+ bne _0812D218
+ 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, _0812D234 @ =sub_812D254
+ 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 _0812D222
+_0812D218:
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ cmp r5, 0x3F
+ bls _0812D1DC
+_0812D222:
+ strh r7, [r6, 0x14]
+ movs r0, 0x5
+ strh r0, [r6, 0x8]
+ b _0812D246
+ .align 2, 0
+_0812D22C: .4byte gSprites
+_0812D230: .4byte gBattleAnimSpriteTemplate_83D7220
+_0812D234: .4byte sub_812D254
+_0812D238:
+ movs r1, 0x14
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _0812D246
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_0812D246:
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812D06C
+
+ thumb_func_start sub_812D254
+sub_812D254: @ 812D254
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0812D288
+ ldr r3, _0812D290 @ =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
+_0812D288:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812D290: .4byte gTasks
+ thumb_func_end sub_812D254
+
+ thumb_func_start sub_812D294
+sub_812D294: @ 812D294
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0812D2A8
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_80787B0
+_0812D2A8:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x27
+ bgt _0812D2DA
+ ldrh r0, [r5, 0x2E]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0812D2CC
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ b _0812D2D8
+_0812D2CC:
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+_0812D2D8:
+ strb r0, [r2]
+_0812D2DA:
+ movs r2, 0x2E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0x1E
+ ble _0812D2F0
+ adds r2, r5, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_0812D2F0:
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x3D
+ bne _0812D33C
+ ldr r1, _0812D344 @ =move_anim_8072740
+ adds r0, r5, 0
+ bl oamt_set_x3A_32
+ 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, _0812D348 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x32]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x36]
+ ldr r0, _0812D34C @ =sub_8078B34
+ str r0, [r5, 0x1C]
+_0812D33C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812D344: .4byte move_anim_8072740
+_0812D348: .4byte gBattleAnimEnemyMonIndex
+_0812D34C: .4byte sub_8078B34
+ thumb_func_end sub_812D294
+
+ thumb_func_start sub_812D350
+sub_812D350: @ 812D350
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _0812D370 @ =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 _0812D374
+ cmp r0, 0x1
+ beq _0812D394
+ b _0812D3A6
+ .align 2, 0
+_0812D370: .4byte gTasks
+_0812D374:
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _0812D390 @ =gUnknown_084024B0
+ adds r0, r4, 0
+ bl sub_80798F4
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0812D3A6
+ .align 2, 0
+_0812D390: .4byte gUnknown_084024B0
+_0812D394:
+ adds r0, r4, 0
+ bl sub_807992C
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812D3A6
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_0812D3A6:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812D350
+
+ thumb_func_start sub_812D3AC
+sub_812D3AC: @ 812D3AC
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x1
+ beq _0812D40C
+ cmp r0, 0x1
+ bgt _0812D3CC
+ cmp r0, 0
+ beq _0812D3D6
+ b _0812D4AE
+_0812D3CC:
+ cmp r0, 0x2
+ beq _0812D43C
+ cmp r0, 0x3
+ beq _0812D490
+ b _0812D4AE
+_0812D3D6:
+ ldr r4, _0812D408 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_8078E70
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r5, 0x30]
+ strh r0, [r5, 0x32]
+ b _0812D484
+ .align 2, 0
+_0812D408: .4byte gBattleAnimPlayerMonIndex
+_0812D40C:
+ 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 _0812D43C
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+_0812D43C:
+ 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 _0812D4AE
+ movs r0, 0
+ strh r0, [r5, 0x34]
+ ldr r1, _0812D48C @ =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_8078F40
+_0812D484:
+ ldrh r0, [r5, 0x2E]
+ adds r0, 0x1
+ strh r0, [r5, 0x2E]
+ b _0812D4AE
+ .align 2, 0
+_0812D48C: .4byte gSprites
+_0812D490:
+ 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 _0812D4AE
+ adds r0, r5, 0
+ bl move_anim_8072740
+_0812D4AE:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812D3AC
+
+ thumb_func_start sub_812D4B4
+sub_812D4B4: @ 812D4B4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _0812D4CC @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812D4D4
+ ldr r0, _0812D4D0 @ =0x0000fff0
+ b _0812D4D8
+ .align 2, 0
+_0812D4CC: .4byte gBattleAnimPlayerMonIndex
+_0812D4D0: .4byte 0x0000fff0
+_0812D4D4:
+ movs r0, 0x80
+ lsls r0, 1
+_0812D4D8:
+ strh r0, [r4, 0x20]
+ movs r0, 0
+ strh r0, [r4, 0x22]
+ ldr r0, _0812D4E8 @ =sub_812D4EC
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812D4E8: .4byte sub_812D4EC
+ thumb_func_end sub_812D4B4
+
+ thumb_func_start sub_812D4EC
+sub_812D4EC: @ 812D4EC
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x48
+ strh r0, [r4, 0x2E]
+ ldr r0, _0812D50C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812D510
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 20
+ b _0812D518
+ .align 2, 0
+_0812D50C: .4byte gBattleAnimPlayerMonIndex
+_0812D510:
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 20
+ negs r0, r0
+_0812D518:
+ 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 _0812D564
+ ldr r0, _0812D584 @ =gSpriteTemplate_8402500
+ 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
+_0812D564:
+ 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 _0812D57E
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0812D57E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812D584: .4byte gSpriteTemplate_8402500
+ thumb_func_end sub_812D4EC
+
+ thumb_func_start sub_812D588
+sub_812D588: @ 812D588
+ push {r4,lr}
+ adds r4, r0, 0
+ bl Random
+ movs r1, 0x3
+ ands r0, r1
+ cmp r0, 0
+ bne _0812D5A2
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x4
+ b _0812D5AA
+_0812D5A2:
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x5
+_0812D5AA:
+ ldr r3, _0812D5DC @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _0812D5E0 @ =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 _0812D5CC
+ negs r0, r1
+ lsls r0, 24
+ lsrs r0, 24
+_0812D5CC:
+ lsls r0, 24
+ asrs r0, 24
+ strh r0, [r4, 0x26]
+ ldr r0, _0812D5E4 @ =sub_812D5E8
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812D5DC: .4byte 0x000003ff
+_0812D5E0: .4byte 0xfffffc00
+_0812D5E4: .4byte sub_812D5E8
+ thumb_func_end sub_812D588
+
+ thumb_func_start sub_812D5E8
+sub_812D5E8: @ 812D5E8
+ 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 _0812D62A
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+ strh r0, [r3, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _0812D65E
+ 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 _0812D65C
+_0812D62A:
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x2
+ bne _0812D640
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_0812D640:
+ movs r1, 0x30
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x3
+ bne _0812D658
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0812D670 @ =0x0000ffff
+ strh r0, [r3, 0x30]
+_0812D658:
+ ldrh r0, [r3, 0x30]
+ adds r0, 0x1
+_0812D65C:
+ strh r0, [r3, 0x30]
+_0812D65E:
+ movs r1, 0x2E
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x3C
+ ble _0812D66C
+ adds r0, r3, 0
+ bl DestroySprite
+_0812D66C:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812D670: .4byte 0x0000ffff
+ thumb_func_end sub_812D5E8
+
+ thumb_func_start sub_812D674
+sub_812D674: @ 812D674
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _0812D6AC @ =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 _0812D6B4
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _0812D6B0 @ =gUnknown_08402518
+ adds r0, r4, 0
+ bl sub_80798F4
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0812D6C6
+ .align 2, 0
+_0812D6AC: .4byte gTasks
+_0812D6B0: .4byte gUnknown_08402518
+_0812D6B4:
+ adds r0, r4, 0
+ bl sub_807992C
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812D6C6
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_0812D6C6:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812D674
+
+ thumb_func_start sub_812D6CC
+sub_812D6CC: @ 812D6CC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _0812D704 @ =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 _0812D70C
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _0812D708 @ =gUnknown_08402540
+ adds r0, r4, 0
+ bl sub_80798F4
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0812D71E
+ .align 2, 0
+_0812D704: .4byte gTasks
+_0812D708: .4byte gUnknown_08402540
+_0812D70C:
+ adds r0, r4, 0
+ bl sub_807992C
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812D71E
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_0812D71E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812D6CC
+
+ thumb_func_start sub_812D724
+sub_812D724: @ 812D724
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _0812D736
+ cmp r0, 0x1
+ beq _0812D760
+ b _0812D788
+_0812D736:
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_80787B0
+ movs r0, 0x90
+ lsls r0, 4
+ strh r0, [r4, 0x30]
+ ldr r0, _0812D75C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x32]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _0812D788
+ .align 2, 0
+_0812D75C: .4byte gBattleAnimPlayerMonIndex
+_0812D760:
+ 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 _0812D788
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0812D788:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812D724
+
+ thumb_func_start sub_812D790
+sub_812D790: @ 812D790
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _0812D7C8 @ =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 _0812D7D0
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _0812D7CC @ =gUnknown_08402590
+ adds r0, r4, 0
+ bl sub_80798F4
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0812D7E2
+ .align 2, 0
+_0812D7C8: .4byte gTasks
+_0812D7CC: .4byte gUnknown_08402590
+_0812D7D0:
+ adds r0, r4, 0
+ bl sub_807992C
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812D7E2
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_0812D7E2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812D790
+
+ thumb_func_start sub_812D7E8
+sub_812D7E8: @ 812D7E8
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _0812D818 @ =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r3, r1, 0
+ cmp r0, 0x4
+ bls _0812D80E
+ b _0812DAFA
+_0812D80E:
+ lsls r0, 2
+ ldr r1, _0812D81C @ =_0812D820
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0812D818: .4byte gTasks
+_0812D81C: .4byte _0812D820
+ .align 2, 0
+_0812D820:
+ .4byte _0812D834
+ .4byte _0812D888
+ .4byte _0812D8C4
+ .4byte _0812DA48
+ .4byte _0812DA84
+_0812D834:
+ ldr r1, _0812D850 @ =REG_MOSAIC
+ movs r0, 0
+ strh r0, [r1]
+ ldr r0, _0812D854 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankIdentity_permutated
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0812D85C
+ ldr r0, _0812D858 @ =REG_BG1CNT
+ b _0812D85E
+ .align 2, 0
+_0812D850: .4byte REG_MOSAIC
+_0812D854: .4byte gBattleAnimPlayerMonIndex
+_0812D858: .4byte REG_BG1CNT
+_0812D85C:
+ ldr r0, _0812D87C @ =REG_BG2CNT
+_0812D85E:
+ ldrb r1, [r0]
+ movs r2, 0x40
+ orrs r1, r2
+ strb r1, [r0]
+ ldr r0, _0812D880 @ =gTasks
+ mov r6, r8
+ lsls r1, r6, 2
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _0812D884 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1C]
+ b _0812DA2A
+ .align 2, 0
+_0812D87C: .4byte REG_BG2CNT
+_0812D880: .4byte gTasks
+_0812D884: .4byte gBattleAnimArgs
+_0812D888:
+ mov r1, r8
+ lsls r0, r1, 2
+ add r0, r8
+ lsls r0, 3
+ adds r4, r0, r3
+ ldrh r0, [r4, 0xC]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ bgt _0812D8A2
+ b _0812DAFA
+_0812D8A2:
+ movs r0, 0
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ ldrh r2, [r4, 0xA]
+ ldr r1, _0812D8C0 @ =REG_MOSAIC
+ lsls r0, r2, 4
+ orrs r0, r2
+ strh r0, [r1]
+ cmp r2, 0xF
+ beq _0812D8BC
+ b _0812DAFA
+_0812D8BC:
+ b _0812DA78
+ .align 2, 0
+_0812D8C0: .4byte REG_MOSAIC
+_0812D8C4:
+ ldr r5, _0812D8F4 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r5]
+ ldr r1, _0812D8F8 @ =gBattleAnimEnemyMonIndex
+ ldrb r1, [r1]
+ mov r2, r8
+ lsls r4, r2, 2
+ adds r2, r4, r2
+ lsls r2, 3
+ adds r2, r3
+ ldrb r2, [r2, 0x1C]
+ bl sub_8031FC4
+ ldrb r1, [r5]
+ mov r0, sp
+ bl sub_8078954
+ bl IsContest
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ beq _0812D8FC
+ movs r1, 0
+ b _0812D906
+ .align 2, 0
+_0812D8F4: .4byte gBattleAnimPlayerMonIndex
+_0812D8F8: .4byte gBattleAnimEnemyMonIndex
+_0812D8FC:
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r1, r0, 24
+_0812D906:
+ ldr r0, _0812D9CC @ =gUnknown_081FAF4C
+ lsls r1, 2
+ adds r1, r0
+ ldr r2, _0812D9D0 @ =gBattleMonForms
+ ldr r0, _0812D9D4 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ adds r0, r2
+ ldrb r0, [r0]
+ lsls r0, 11
+ ldr r1, [r1]
+ adds r1, r0
+ ldr r2, [sp]
+ ldr r0, _0812D9D8 @ =0x040000d4
+ str r1, [r0]
+ str r2, [r0, 0x4]
+ ldr r1, _0812D9DC @ =0x84000200
+ str r1, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812DA20
+ ldr r5, _0812D9E0 @ =0x02019348
+ ldrh r0, [r5]
+ bl sub_80AEB1C
+ adds r4, r0, 0
+ ldrh r0, [r5, 0x2]
+ bl sub_80AEB1C
+ lsls r4, 24
+ lsls r0, 24
+ cmp r4, r0
+ beq _0812D9A2
+ ldr r6, [sp, 0x4]
+ movs r5, 0
+ movs r0, 0x7
+ mov r12, r0
+ movs r7, 0
+_0812D956:
+ movs r4, 0
+ adds r3, r7, r6
+ mov r1, r12
+ lsls r0, r1, 1
+ adds r2, r0, r6
+_0812D960:
+ ldrh r1, [r3]
+ ldrh r0, [r2]
+ strh r0, [r3]
+ strh r1, [r2]
+ adds r3, 0x2
+ subs r2, 0x2
+ adds r4, 0x1
+ cmp r4, 0x3
+ ble _0812D960
+ movs r2, 0x20
+ add r12, r2
+ adds r7, 0x40
+ adds r5, 0x1
+ cmp r5, 0x7
+ ble _0812D956
+ movs r5, 0
+ movs r0, 0x80
+ lsls r0, 3
+ adds r3, r0, 0
+_0812D986:
+ adds r2, r5, 0x1
+ lsls r0, r5, 6
+ adds r1, r0, r6
+ movs r4, 0x7
+_0812D98E:
+ ldrh r0, [r1]
+ eors r0, r3
+ strh r0, [r1]
+ adds r1, 0x2
+ subs r4, 0x1
+ cmp r4, 0
+ bge _0812D98E
+ adds r5, r2, 0
+ cmp r5, 0x7
+ ble _0812D986
+_0812D9A2:
+ ldr r0, _0812D9E0 @ =0x02019348
+ ldrh r0, [r0, 0x2]
+ bl sub_80AEB1C
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812D9F0
+ ldr r3, _0812D9E4 @ =gSprites
+ ldr r4, _0812D9E8 @ =gObjectBankIDs
+ ldr r2, _0812D9D4 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r2]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r3, 0
+ adds r1, 0x10
+ adds r0, r1
+ ldr r1, _0812D9EC @ =gSpriteAffineAnimTable_81E7C18
+ b _0812DA0A
+ .align 2, 0
+_0812D9CC: .4byte gUnknown_081FAF4C
+_0812D9D0: .4byte gBattleMonForms
+_0812D9D4: .4byte gBattleAnimPlayerMonIndex
+_0812D9D8: .4byte 0x040000d4
+_0812D9DC: .4byte 0x84000200
+_0812D9E0: .4byte 0x02019348
+_0812D9E4: .4byte gSprites
+_0812D9E8: .4byte gObjectBankIDs
+_0812D9EC: .4byte gSpriteAffineAnimTable_81E7C18
+_0812D9F0:
+ ldr r3, _0812DA34 @ =gSprites
+ ldr r4, _0812DA38 @ =gObjectBankIDs
+ ldr r2, _0812DA3C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r2]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r3, 0
+ adds r1, 0x10
+ adds r0, r1
+ ldr r1, _0812DA40 @ =gSpriteAffineAnimTable_81E7BEC
+_0812DA0A:
+ str r1, [r0]
+ ldrb r0, [r2]
+ adds r0, r4
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ movs r1, 0
+ bl StartSpriteAffineAnim
+_0812DA20:
+ ldr r0, _0812DA44 @ =gTasks
+ mov r1, r9
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+_0812DA2A:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _0812DAFA
+ .align 2, 0
+_0812DA34: .4byte gSprites
+_0812DA38: .4byte gObjectBankIDs
+_0812DA3C: .4byte gBattleAnimPlayerMonIndex
+_0812DA40: .4byte gSpriteAffineAnimTable_81E7BEC
+_0812DA44: .4byte gTasks
+_0812DA48:
+ mov r1, r8
+ lsls r0, r1, 2
+ add r0, r8
+ lsls r0, 3
+ adds r4, r0, r3
+ ldrh r0, [r4, 0xC]
+ adds r1, r0, 0x1
+ strh r1, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _0812DAFA
+ movs r0, 0
+ strh r0, [r4, 0xC]
+ ldrh r0, [r4, 0xA]
+ subs r0, 0x1
+ strh r0, [r4, 0xA]
+ ldrh r2, [r4, 0xA]
+ ldr r1, _0812DA80 @ =REG_MOSAIC
+ lsls r0, r2, 4
+ orrs r0, r2
+ strh r0, [r1]
+ cmp r2, 0
+ bne _0812DAFA
+_0812DA78:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0812DAFA
+ .align 2, 0
+_0812DA80: .4byte REG_MOSAIC
+_0812DA84:
+ ldr r1, _0812DAA0 @ =REG_MOSAIC
+ movs r0, 0
+ strh r0, [r1]
+ ldr r0, _0812DAA4 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankIdentity_permutated
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0812DAAC
+ ldr r2, _0812DAA8 @ =REG_BG1CNT
+ b _0812DAAE
+ .align 2, 0
+_0812DAA0: .4byte REG_MOSAIC
+_0812DAA4: .4byte gBattleAnimPlayerMonIndex
+_0812DAA8: .4byte REG_BG1CNT
+_0812DAAC:
+ ldr r2, _0812DB08 @ =REG_BG2CNT
+_0812DAAE:
+ ldrb r1, [r2]
+ movs r0, 0x41
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812DAF4
+ ldr r4, _0812DB0C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0812DAF4
+ ldr r0, _0812DB10 @ =gTasks
+ mov r2, r8
+ lsls r1, r2, 2
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ movs r6, 0x1C
+ ldrsh r0, [r1, r6]
+ cmp r0, 0
+ bne _0812DAF4
+ ldrb r0, [r4]
+ lsls r1, r0, 2
+ ldr r2, _0812DB14 @ =0x02017800
+ adds r1, r2
+ ldrh r1, [r1, 0x2]
+ bl sub_8032984
+_0812DAF4:
+ mov r0, r8
+ bl DestroyAnimVisualTask
+_0812DAFA:
+ add sp, 0xC
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812DB08: .4byte REG_BG2CNT
+_0812DB0C: .4byte gBattleAnimPlayerMonIndex
+_0812DB10: .4byte gTasks
+_0812DB14: .4byte 0x02017800
+ thumb_func_end sub_812D7E8
+
+ thumb_func_start c3_80DFBE4
+c3_80DFBE4: @ 812DB18
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r4, _0812DB48 @ =gBattleAnimArgs
+ ldr r3, _0812DB4C @ =gSprites
+ ldr r2, _0812DB50 @ =gObjectBankIDs
+ ldr r1, _0812DB54 @ =gBattleAnimPlayerMonIndex
+ 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
+_0812DB48: .4byte gBattleAnimArgs
+_0812DB4C: .4byte gSprites
+_0812DB50: .4byte gObjectBankIDs
+_0812DB54: .4byte gBattleAnimPlayerMonIndex
+ thumb_func_end c3_80DFBE4
+
+ thumb_func_start sub_812DB58
+sub_812DB58: @ 812DB58
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldr r0, _0812DB7C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ ldr r1, _0812DB80 @ =gBattleAnimEnemyMonIndex
+ ldrb r1, [r1]
+ movs r2, 0x1
+ bl sub_8031FC4
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812DB7C: .4byte gBattleAnimPlayerMonIndex
+_0812DB80: .4byte gBattleAnimEnemyMonIndex
+ thumb_func_end sub_812DB58
+
+ thumb_func_start sub_812DB84
+sub_812DB84: @ 812DB84
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _0812DBB4 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r1
+ movs r2, 0x8
+ ldrsh r0, [r0, r2]
+ adds r2, r1, 0
+ cmp r0, 0x4
+ bls _0812DBA8
+ b _0812DE80
+_0812DBA8:
+ lsls r0, 2
+ ldr r1, _0812DBB8 @ =_0812DBBC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0812DBB4: .4byte gTasks
+_0812DBB8: .4byte _0812DBBC
+ .align 2, 0
+_0812DBBC:
+ .4byte _0812DBD0
+ .4byte _0812DCFC
+ .4byte _0812DD4C
+ .4byte _0812DDB6
+ .4byte _0812DDEA
+_0812DBD0:
+ ldr r1, _0812DC70 @ =REG_BLDCNT
+ ldr r4, _0812DC74 @ =0x00003f42
+ adds r0, r4, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ movs r2, 0x80
+ lsls r2, 5
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r4, _0812DC78 @ =REG_BG1CNT
+ ldrb r1, [r4, 0x1]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r4, 0x1]
+ ldrb r1, [r4]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r4]
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812DC12
+ ldrb r0, [r4]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r4]
+_0812DC12:
+ mov r0, sp
+ bl sub_8078914
+ ldr r1, [sp, 0x4]
+ movs r4, 0
+ str r4, [sp, 0xC]
+ ldr r2, _0812DC7C @ =0x040000d4
+ add r0, sp, 0xC
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ ldr r0, _0812DC80 @ =0x85000400
+ str r0, [r2, 0x8]
+ ldr r0, [r2, 0x8]
+ ldr r0, _0812DC84 @ =gUnknown_08D2AA98
+ bl LZDecompressVram
+ ldr r0, _0812DC88 @ =gUnknown_08D2A9E0
+ ldr r1, [sp]
+ bl LZDecompressVram
+ ldr r0, _0812DC8C @ =gUnknown_08D2AA80
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812DC9C
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80763FC
+ ldr r1, _0812DC90 @ =gUnknown_030042C0
+ ldr r2, _0812DC94 @ =0x0000ffc8
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r0, _0812DC98 @ =gUnknown_030041B4
+ strh r4, [r0]
+ b _0812DCCE
+ .align 2, 0
+_0812DC70: .4byte REG_BLDCNT
+_0812DC74: .4byte 0x00003f42
+_0812DC78: .4byte REG_BG1CNT
+_0812DC7C: .4byte 0x040000d4
+_0812DC80: .4byte 0x85000400
+_0812DC84: .4byte gUnknown_08D2AA98
+_0812DC88: .4byte gUnknown_08D2A9E0
+_0812DC8C: .4byte gUnknown_08D2AA80
+_0812DC90: .4byte gUnknown_030042C0
+_0812DC94: .4byte 0x0000ffc8
+_0812DC98: .4byte gUnknown_030041B4
+_0812DC9C:
+ ldr r0, _0812DCB4 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812DCC0
+ ldr r1, _0812DCB8 @ =gUnknown_030042C0
+ ldr r4, _0812DCBC @ =0x0000ff79
+ adds r0, r4, 0
+ b _0812DCC6
+ .align 2, 0
+_0812DCB4: .4byte gBattleAnimPlayerMonIndex
+_0812DCB8: .4byte gUnknown_030042C0
+_0812DCBC: .4byte 0x0000ff79
+_0812DCC0:
+ ldr r1, _0812DCEC @ =gUnknown_030042C0
+ ldr r2, _0812DCF0 @ =0x0000fff6
+ adds r0, r2, 0
+_0812DCC6:
+ strh r0, [r1]
+ ldr r1, _0812DCF4 @ =gUnknown_030041B4
+ movs r0, 0
+ strh r0, [r1]
+_0812DCCE:
+ ldr r0, _0812DCF8 @ =gTasks
+ lsls r1, r7, 2
+ adds r1, r7
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _0812DCEC @ =gUnknown_030042C0
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1C]
+ ldr r0, _0812DCF4 @ =gUnknown_030041B4
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1E]
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ b _0812DDD2
+ .align 2, 0
+_0812DCEC: .4byte gUnknown_030042C0
+_0812DCF0: .4byte 0x0000fff6
+_0812DCF4: .4byte gUnknown_030041B4
+_0812DCF8: .4byte gTasks
+_0812DCFC:
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r3, r0, r2
+ ldrh r0, [r3, 0x10]
+ adds r1, r0, 0x1
+ strh r1, [r3, 0x10]
+ lsls r0, 16
+ cmp r0, 0
+ bgt _0812DD12
+ b _0812DE80
+_0812DD12:
+ movs r0, 0
+ strh r0, [r3, 0x10]
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _0812DD28
+ movs r0, 0xC
+ strh r0, [r3, 0xA]
+_0812DD28:
+ ldr r2, _0812DD48 @ =REG_BLDALPHA
+ ldrh r1, [r3, 0xA]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r0, r1
+ strh r0, [r2]
+ movs r4, 0xA
+ ldrsh r0, [r3, r4]
+ cmp r0, 0xC
+ beq _0812DD40
+ b _0812DE80
+_0812DD40:
+ ldrh r0, [r3, 0x8]
+ adds r0, 0x1
+ strh r0, [r3, 0x8]
+ b _0812DE80
+ .align 2, 0
+_0812DD48: .4byte REG_BLDALPHA
+_0812DD4C:
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r3, r0, r2
+ ldrh r0, [r3, 0xA]
+ subs r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ cmp r0, 0
+ bge _0812DD64
+ movs r0, 0
+ strh r0, [r3, 0xA]
+_0812DD64:
+ ldr r2, _0812DDA4 @ =REG_BLDALPHA
+ ldrh r1, [r3, 0xA]
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r0, r1
+ strh r0, [r2]
+ movs r1, 0xA
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ beq _0812DD7C
+ b _0812DE80
+_0812DD7C:
+ ldr r2, _0812DDA8 @ =gUnknown_030042C0
+ ldr r1, _0812DDAC @ =gUnknown_084025C0
+ movs r4, 0xC
+ ldrsh r0, [r3, r4]
+ adds r0, r1
+ ldrb r0, [r0]
+ lsls r0, 24
+ asrs r0, 24
+ ldrh r1, [r3, 0x1C]
+ adds r0, r1
+ strh r0, [r2]
+ ldrh r0, [r3, 0xC]
+ adds r0, 0x1
+ strh r0, [r3, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _0812DDB0
+ strh r0, [r3, 0x8]
+ b _0812DE80
+ .align 2, 0
+_0812DDA4: .4byte REG_BLDALPHA
+_0812DDA8: .4byte gUnknown_030042C0
+_0812DDAC: .4byte gUnknown_084025C0
+_0812DDB0:
+ movs r0, 0x3
+ strh r0, [r3, 0x8]
+ b _0812DE80
+_0812DDB6:
+ lsls r0, r7, 2
+ adds r0, r7
+ 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 _0812DE80
+ movs r0, 0
+ strh r0, [r1, 0xE]
+ movs r0, 0x1
+_0812DDD2:
+ strh r0, [r1, 0x8]
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8076F98
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xE4
+ bl PlaySE12WithPanning
+ b _0812DE80
+_0812DDEA:
+ mov r0, sp
+ bl sub_8078914
+ ldr r2, [sp]
+ movs r3, 0x80
+ lsls r3, 6
+ add r5, sp, 0xC
+ movs r6, 0
+ ldr r1, _0812DE90 @ =0x040000d4
+ movs r4, 0x80
+ lsls r4, 5
+ mov r8, r5
+ ldr r0, _0812DE94 @ =0x85000400
+ mov r12, r0
+ movs r0, 0x85
+ lsls r0, 24
+ mov r9, r0
+_0812DE0C:
+ str r6, [sp, 0xC]
+ mov r0, r8
+ str r0, [r1]
+ str r2, [r1, 0x4]
+ mov r0, r12
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ adds r2, r4
+ subs r3, r4
+ cmp r3, r4
+ bhi _0812DE0C
+ str r6, [sp, 0xC]
+ str r5, [r1]
+ str r2, [r1, 0x4]
+ lsrs r0, r3, 2
+ mov r2, r9
+ orrs r0, r2
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r4, 0
+ str r4, [sp, 0xC]
+ ldr r0, _0812DE90 @ =0x040000d4
+ str r5, [r0]
+ str r1, [r0, 0x4]
+ ldr r1, _0812DE98 @ =0x85000200
+ str r1, [r0, 0x8]
+ ldr r0, [r0, 0x8]
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812DE5A
+ ldr r2, _0812DE9C @ =REG_BG1CNT
+ ldrb r1, [r2]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_0812DE5A:
+ ldr r2, _0812DE9C @ =REG_BG1CNT
+ ldrb r1, [r2]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0812DEA0 @ =gUnknown_030042C0
+ strh r4, [r0]
+ ldr r0, _0812DEA4 @ =gUnknown_030041B4
+ strh r4, [r0]
+ ldr r0, _0812DEA8 @ =REG_BLDCNT
+ strh r4, [r0]
+ adds r0, 0x2
+ strh r4, [r0]
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_0812DE80:
+ add sp, 0x10
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812DE90: .4byte 0x040000d4
+_0812DE94: .4byte 0x85000400
+_0812DE98: .4byte 0x85000200
+_0812DE9C: .4byte REG_BG1CNT
+_0812DEA0: .4byte gUnknown_030042C0
+_0812DEA4: .4byte gUnknown_030041B4
+_0812DEA8: .4byte REG_BLDCNT
+ thumb_func_end sub_812DB84
+
+ thumb_func_start sub_812DEAC
+sub_812DEAC: @ 812DEAC
+ 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 _0812DED6
+ movs r0, 0x20
+ subs r0, r1
+ lsls r0, 16
+ lsrs r5, r0, 16
+_0812DED6:
+ ldr r4, _0812DFD0 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r4]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, r5
+ strh r0, [r7, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x1
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x20
+ strh r0, [r7, 0x22]
+ ldr r1, _0812DFD4 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r7, 0x30]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r7, 0x32]
+ ldr r4, _0812DFD8 @ =gBattleAnimSpriteTemplate_84025EC
+ 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, _0812DFDC @ =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, _0812DFD4 @ =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, _0812DFE0 @ =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, _0812DFE4 @ =sub_812E0F8
+ 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, _0812DFE8 @ =sub_812DFEC
+ 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
+_0812DFD0: .4byte gBattleAnimPlayerMonIndex
+_0812DFD4: .4byte gBattleAnimArgs
+_0812DFD8: .4byte gBattleAnimSpriteTemplate_84025EC
+_0812DFDC: .4byte gSprites
+_0812DFE0: .4byte 0x0000ffff
+_0812DFE4: .4byte sub_812E0F8
+_0812DFE8: .4byte sub_812DFEC
+ thumb_func_end sub_812DEAC
+
+ thumb_func_start sub_812DFEC
+sub_812DFEC: @ 812DFEC
+ 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 _0812E03A
+ lsls r0, r1, 16
+ asrs r0, 16
+ movs r1, 0x8
+ negs r1, r1
+ cmp r0, r1
+ bge _0812E03A
+ ldr r2, _0812E094 @ =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]
+_0812E03A:
+ movs r1, 0x36
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x1
+ bne _0812E06E
+ movs r2, 0x26
+ ldrsh r1, [r3, r2]
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ bge _0812E06E
+ ldr r2, _0812E094 @ =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]
+_0812E06E:
+ 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 _0812E090
+ adds r2, r3, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0812E098 @ =sub_812E09C
+ str r0, [r3, 0x1C]
+_0812E090:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812E094: .4byte gSprites
+_0812E098: .4byte sub_812E09C
+ thumb_func_end sub_812DFEC
+
+ thumb_func_start sub_812E09C
+sub_812E09C: @ 812E09C
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r5, _0812E0F0 @ =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, _0812E0F4 @ =SpriteCallbackDummy
+ cmp r2, r0
+ bne _0812E0E8
+ 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 _0812E0E8
+ 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 move_anim_8072740
+_0812E0E8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812E0F0: .4byte gSprites
+_0812E0F4: .4byte SpriteCallbackDummy
+ thumb_func_end sub_812E09C
+
+ thumb_func_start sub_812E0F8
+sub_812E0F8: @ 812E0F8
+ 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 _0812E144
+ 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 _0812E144
+ mov r1, r12
+ ldrb r0, [r1]
+ movs r1, 0x4
+ orrs r0, r1
+ mov r1, r12
+ strb r0, [r1]
+ ldr r0, _0812E148 @ =SpriteCallbackDummy
+ str r0, [r3, 0x1C]
+_0812E144:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812E148: .4byte SpriteCallbackDummy
+ thumb_func_end sub_812E0F8
+
+ thumb_func_start sub_812E14C
+sub_812E14C: @ 812E14C
+ push {r4-r6,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _0812E174 @ =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 _0812E16A
+ b _0812E476
+_0812E16A:
+ lsls r0, 2
+ ldr r1, _0812E178 @ =_0812E17C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0812E174: .4byte gTasks
+_0812E178: .4byte _0812E17C
+ .align 2, 0
+_0812E17C:
+ .4byte _0812E194
+ .4byte _0812E300
+ .4byte _0812E388
+ .4byte _0812E3BC
+ .4byte _0812E3E8
+ .4byte _0812E420
+_0812E194:
+ ldr r1, _0812E230 @ =REG_BLDCNT
+ ldr r3, _0812E234 @ =0x00003f42
+ adds r0, r3, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ ldr r2, _0812E238 @ =0x00000d03
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r4, _0812E23C @ =REG_BG1CNT
+ ldrb r1, [r4, 0x1]
+ movs r0, 0x3F
+ ands r0, r1
+ strb r0, [r4, 0x1]
+ ldrb r1, [r4]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r4]
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812E1D4
+ ldrb r0, [r4]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x4
+ orrs r1, r0
+ strb r1, [r4]
+_0812E1D4:
+ mov r0, sp
+ bl sub_8078914
+ ldr r1, [sp, 0x4]
+ movs r4, 0
+ str r4, [sp, 0xC]
+ ldr r2, _0812E240 @ =0x040000d4
+ add r0, sp, 0xC
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ ldr r0, _0812E244 @ =0x85000400
+ str r0, [r2, 0x8]
+ ldr r0, [r2, 0x8]
+ ldr r0, _0812E248 @ =gUnknown_08D2AA98
+ bl LZDecompressVram
+ ldr r0, _0812E24C @ =gUnknown_08D2A9E0
+ ldr r1, [sp]
+ bl LZDecompressVram
+ ldr r0, _0812E250 @ =gUnknown_08D2AA80
+ mov r1, sp
+ ldrb r1, [r1, 0x8]
+ lsls r1, 4
+ movs r2, 0x20
+ bl LoadCompressedPalette
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812E260
+ mov r0, sp
+ ldrb r0, [r0, 0x8]
+ ldr r1, [sp, 0x4]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80763FC
+ ldr r1, _0812E254 @ =gUnknown_030042C0
+ ldr r3, _0812E258 @ =0x0000ffc8
+ adds r0, r3, 0
+ strh r0, [r1]
+ ldr r0, _0812E25C @ =gUnknown_030041B4
+ strh r4, [r0]
+ b _0812E2D2
+ .align 2, 0
+_0812E230: .4byte REG_BLDCNT
+_0812E234: .4byte 0x00003f42
+_0812E238: .4byte 0x00000d03
+_0812E23C: .4byte REG_BG1CNT
+_0812E240: .4byte 0x040000d4
+_0812E244: .4byte 0x85000400
+_0812E248: .4byte gUnknown_08D2AA98
+_0812E24C: .4byte gUnknown_08D2A9E0
+_0812E250: .4byte gUnknown_08D2AA80
+_0812E254: .4byte gUnknown_030042C0
+_0812E258: .4byte 0x0000ffc8
+_0812E25C: .4byte gUnknown_030041B4
+_0812E260:
+ ldr r0, _0812E2A0 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl IsDoubleBattle
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0812E2B4
+ ldr r1, _0812E2A4 @ =gUnknown_030042C0
+ cmp r4, 0x1
+ bne _0812E284
+ ldr r2, _0812E2A8 @ =0x0000ff65
+ adds r0, r2, 0
+ strh r0, [r1]
+_0812E284:
+ cmp r4, 0x3
+ bne _0812E28E
+ ldr r3, _0812E2AC @ =0x0000ff8d
+ adds r0, r3, 0
+ strh r0, [r1]
+_0812E28E:
+ cmp r4, 0
+ bne _0812E296
+ movs r0, 0xE
+ strh r0, [r1]
+_0812E296:
+ cmp r4, 0x2
+ bne _0812E2CC
+ ldr r1, _0812E2A4 @ =gUnknown_030042C0
+ ldr r2, _0812E2B0 @ =0x0000ffec
+ b _0812E2C8
+ .align 2, 0
+_0812E2A0: .4byte gBattleAnimEnemyMonIndex
+_0812E2A4: .4byte gUnknown_030042C0
+_0812E2A8: .4byte 0x0000ff65
+_0812E2AC: .4byte 0x0000ff8d
+_0812E2B0: .4byte 0x0000ffec
+_0812E2B4:
+ cmp r4, 0x1
+ bne _0812E2C0
+ ldr r1, _0812E2EC @ =gUnknown_030042C0
+ ldr r3, _0812E2F0 @ =0x0000ff79
+ adds r0, r3, 0
+ strh r0, [r1]
+_0812E2C0:
+ cmp r4, 0
+ bne _0812E2CC
+ ldr r1, _0812E2EC @ =gUnknown_030042C0
+ ldr r2, _0812E2F4 @ =0x0000fff6
+_0812E2C8:
+ adds r0, r2, 0
+ strh r0, [r1]
+_0812E2CC:
+ ldr r1, _0812E2F8 @ =gUnknown_030041B4
+ movs r0, 0
+ strh r0, [r1]
+_0812E2D2:
+ ldr r0, _0812E2FC @ =gTasks
+ lsls r1, r6, 2
+ adds r1, r6
+ lsls r1, 3
+ adds r1, r0
+ ldr r0, _0812E2EC @ =gUnknown_030042C0
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1C]
+ ldr r0, _0812E2F8 @ =gUnknown_030041B4
+ ldrh r0, [r0]
+ strh r0, [r1, 0x1E]
+ b _0812E380
+ .align 2, 0
+_0812E2EC: .4byte gUnknown_030042C0
+_0812E2F0: .4byte 0x0000ff79
+_0812E2F4: .4byte 0x0000fff6
+_0812E2F8: .4byte gUnknown_030041B4
+_0812E2FC: .4byte gTasks
+_0812E300:
+ ldr r1, _0812E334 @ =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, _0812E338 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0812E344
+ ldr r2, _0812E33C @ =gUnknown_030042C0
+ ldr r1, _0812E340 @ =gUnknown_08402604
+ 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 _0812E356
+ .align 2, 0
+_0812E334: .4byte gTasks
+_0812E338: .4byte gBattleAnimEnemyMonIndex
+_0812E33C: .4byte gUnknown_030042C0
+_0812E340: .4byte gUnknown_08402604
+_0812E344:
+ ldr r2, _0812E374 @ =gUnknown_030042C0
+ ldr r1, _0812E378 @ =gUnknown_08402604
+ movs r3, 0xC
+ ldrsh r0, [r5, r3]
+ adds r0, r1
+ movs r1, 0
+ ldrsb r1, [r0, r1]
+ ldrh r0, [r5, 0x1C]
+ subs r0, r1
+_0812E356:
+ strh r0, [r2]
+ ldr r0, _0812E37C @ =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 _0812E380
+ strh r0, [r1, 0x8]
+ b _0812E476
+ .align 2, 0
+_0812E374: .4byte gUnknown_030042C0
+_0812E378: .4byte gUnknown_08402604
+_0812E37C: .4byte gTasks
+_0812E380:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _0812E476
+_0812E388:
+ 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 _0812E3A2
+ movs r0, 0x5
+ strh r0, [r4, 0xA]
+_0812E3A2:
+ ldr r2, _0812E3B8 @ =REG_BLDALPHA
+ ldrh r0, [r4, 0xA]
+ lsls r0, 8
+ movs r1, 0x3
+ orrs r0, r1
+ strh r0, [r2]
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x5
+ bne _0812E476
+ b _0812E3DC
+ .align 2, 0
+_0812E3B8: .4byte REG_BLDALPHA
+_0812E3BC:
+ 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, _0812E3E4 @ =gUnknown_08402608
+ movs r3, 0xC
+ ldrsh r0, [r4, r3]
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r1, r0
+ ble _0812E476
+_0812E3DC:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0812E476
+ .align 2, 0
+_0812E3E4: .4byte gUnknown_08402608
+_0812E3E8:
+ 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 _0812E402
+ movs r0, 0xD
+ strh r0, [r4, 0xA]
+_0812E402:
+ ldr r2, _0812E41C @ =REG_BLDALPHA
+ ldrh r0, [r4, 0xA]
+ lsls r0, 8
+ movs r1, 0x3
+ orrs r0, r1
+ strh r0, [r2]
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0xD
+ bne _0812E476
+ movs r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0812E476
+ .align 2, 0
+_0812E41C: .4byte REG_BLDALPHA
+_0812E420:
+ mov r0, sp
+ bl sub_8078914
+ ldr r2, [sp, 0x4]
+ movs r4, 0
+ str r4, [sp, 0xC]
+ ldr r1, _0812E480 @ =0x040000d4
+ add r0, sp, 0xC
+ str r0, [r1]
+ str r2, [r1, 0x4]
+ ldr r0, _0812E484 @ =0x85000200
+ str r0, [r1, 0x8]
+ ldr r0, [r1, 0x8]
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812E450
+ ldr r2, _0812E488 @ =REG_BG1CNT
+ ldrb r1, [r2]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_0812E450:
+ ldr r2, _0812E488 @ =REG_BG1CNT
+ ldrb r1, [r2]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x1
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0812E48C @ =gUnknown_030042C0
+ strh r4, [r0]
+ ldr r0, _0812E490 @ =gUnknown_030041B4
+ strh r4, [r0]
+ ldr r0, _0812E494 @ =REG_BLDCNT
+ strh r4, [r0]
+ adds r0, 0x2
+ strh r4, [r0]
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_0812E476:
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812E480: .4byte 0x040000d4
+_0812E484: .4byte 0x85000200
+_0812E488: .4byte REG_BG1CNT
+_0812E48C: .4byte gUnknown_030042C0
+_0812E490: .4byte gUnknown_030041B4
+_0812E494: .4byte REG_BLDCNT
+ thumb_func_end sub_812E14C
+
+ thumb_func_start sub_812E498
+sub_812E498: @ 812E498
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r1, _0812E4D0 @ =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 _0812E4D8
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _0812E4D4 @ =gUnknown_08402610
+ adds r0, r4, 0
+ bl sub_80798F4
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0812E4EA
+ .align 2, 0
+_0812E4D0: .4byte gTasks
+_0812E4D4: .4byte gUnknown_08402610
+_0812E4D8:
+ adds r0, r4, 0
+ bl sub_807992C
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812E4EA
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_0812E4EA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812E498
+
+ thumb_func_start sub_812E4F0
+sub_812E4F0: @ 812E4F0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ movs r2, 0x2E
+ ldrsh r1, [r4, r2]
+ cmp r1, 0
+ bne _0812E50E
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_80787B0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _0812E562
+_0812E50E:
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ cmp r1, 0x14
+ ble _0812E562
+ ldrh r0, [r4, 0x30]
+ adds r0, 0xA0
+ strh r0, [r4, 0x30]
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x80
+ strh r0, [r4, 0x32]
+ ldr r0, _0812E53C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812E540
+ ldrh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+ negs r0, r0
+ b _0812E546
+ .align 2, 0
+_0812E53C: .4byte gBattleAnimPlayerMonIndex
+_0812E540:
+ ldrh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 24
+_0812E546:
+ 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 _0812E562
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0812E562:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812E4F0
+
+ thumb_func_start sub_812E568
+sub_812E568: @ 812E568
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _0812E58C @ =gTasks
+ adds r4, r0, r1
+ ldr r5, _0812E590 @ =gBattleAnimArgs
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0812E594
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+ b _0812E628
+ .align 2, 0
+_0812E58C: .4byte gTasks
+_0812E590: .4byte gBattleAnimArgs
+_0812E594:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bge _0812E5A0
+ movs r0, 0
+ strh r0, [r5, 0x4]
+_0812E5A0:
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x2
+ ble _0812E5AC
+ movs r0, 0x2
+ strh r0, [r5, 0x4]
+_0812E5AC:
+ 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 obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ movs r1, 0
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0812E5F8
+ ldr r0, _0812E5F4 @ =gBattleAnimPlayerMonIndex
+ b _0812E5FA
+ .align 2, 0
+_0812E5F4: .4byte gBattleAnimPlayerMonIndex
+_0812E5F8:
+ ldr r0, _0812E630 @ =gBattleAnimEnemyMonIndex
+_0812E5FA:
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0812E618
+ 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]
+_0812E618:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl sub_8078E70
+ ldr r0, _0812E634 @ =sub_812E638
+ str r0, [r4]
+_0812E628:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812E630: .4byte gBattleAnimEnemyMonIndex
+_0812E634: .4byte sub_812E638
+ thumb_func_end sub_812E568
+
+ thumb_func_start sub_812E638
+sub_812E638: @ 812E638
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0812E65C @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r6, [r4, r0]
+ cmp r6, 0x1
+ beq _0812E6C0
+ cmp r6, 0x1
+ bgt _0812E660
+ cmp r6, 0
+ beq _0812E66C
+ b _0812E798
+ .align 2, 0
+_0812E65C: .4byte gTasks
+_0812E660:
+ cmp r6, 0x2
+ beq _0812E718
+ cmp r6, 0x3
+ bne _0812E66A
+ b _0812E788
+_0812E66A:
+ b _0812E798
+_0812E66C:
+ ldr r2, _0812E6BC @ =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_8078F9C
+ 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 _0812E798
+ strh r6, [r4, 0xA]
+ b _0812E780
+ .align 2, 0
+_0812E6BC: .4byte gSprites
+_0812E6C0:
+ ldr r2, _0812E714 @ =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_8078F9C
+ 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 _0812E798
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ b _0812E780
+ .align 2, 0
+_0812E714: .4byte gSprites
+_0812E718:
+ ldr r2, _0812E77C @ =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_8078F9C
+ 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 _0812E798
+ ldrh r1, [r4, 0x14]
+ movs r2, 0x14
+ ldrsh r0, [r4, r2]
+ cmp r0, 0
+ beq _0812E780
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x14]
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0x8]
+ b _0812E798
+ .align 2, 0
+_0812E77C: .4byte gSprites
+_0812E780:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0812E798
+_0812E788:
+ ldrh r0, [r4, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8078F40
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_0812E798:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812E638
+
+ thumb_func_start sub_812E7A0
+sub_812E7A0: @ 812E7A0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _0812E7BC @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ bne _0812E7C4
+ strh r0, [r4, 0x20]
+ ldr r1, _0812E7C0 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ b _0812E7CE
+ .align 2, 0
+_0812E7BC: .4byte gBattleAnimPlayerMonIndex
+_0812E7C0: .4byte gBattleAnimArgs
+_0812E7C4:
+ movs r0, 0xF0
+ strh r0, [r4, 0x20]
+ ldr r1, _0812E7E8 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ subs r0, 0x1E
+_0812E7CE:
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r4, 0x32]
+ ldrb r1, [r1, 0x2]
+ adds r0, r4, 0
+ bl StartSpriteAnim
+ ldr r0, _0812E7EC @ =sub_812E7F0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812E7E8: .4byte gBattleAnimArgs
+_0812E7EC: .4byte sub_812E7F0
+ thumb_func_end sub_812E7A0
+
+ thumb_func_start sub_812E7F0
+sub_812E7F0: @ 812E7F0
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x3
+ strh r0, [r4, 0x2E]
+ ldr r0, _0812E830 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812E834
+ 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 _0812E822
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0812E822:
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0xFF
+ ands r0, r1
+ movs r1, 0x10
+ bl Sin
+ b _0812E858
+ .align 2, 0
+_0812E830: .4byte gBattleAnimPlayerMonIndex
+_0812E834:
+ 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 _0812E84C
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0812E84C:
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0xFF
+ ands r0, r1
+ movs r1, 0x10
+ bl Cos
+_0812E858:
+ strh r0, [r4, 0x26]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812E7F0
+
+ thumb_func_start sub_812E860
+sub_812E860: @ 812E860
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _0812E8A8 @ =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, _0812E8AC @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ movs r1, 0
+ bl sub_8078E70
+ ldr r0, _0812E8B0 @ =sub_812E8B4
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812E8A8: .4byte gTasks
+_0812E8AC: .4byte gBattleAnimArgs
+_0812E8B0: .4byte sub_812E8B4
+ thumb_func_end sub_812E860
+
+ thumb_func_start sub_812E8B4
+sub_812E8B4: @ 812E8B4
+ 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, _0812E8E0 @ =gTasks
+ adds r7, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r7, r1]
+ mov r8, r0
+ cmp r0, 0x1
+ beq _0812E950
+ cmp r0, 0x1
+ bgt _0812E8E4
+ cmp r0, 0
+ beq _0812E8EC
+ b _0812E9CA
+ .align 2, 0
+_0812E8E0: .4byte gTasks
+_0812E8E4:
+ mov r2, r8
+ cmp r2, 0x2
+ beq _0812E9B8
+ b _0812E9CA
+_0812E8EC:
+ 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 _0812E9CA
+ 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 _0812E944
+ lsls r0, 16
+ asrs r0, 16
+ mov r2, r8
+ subs r0, r2, r0
+ b _0812E9A2
+_0812E944:
+ lsls r0, 16
+ asrs r0, 16
+ mov r3, r8
+ subs r0, r3
+ strh r0, [r7, 0xC]
+ b _0812E9CA
+_0812E950:
+ ldr r1, _0812E9A8 @ =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 _0812E9CA
+ 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 _0812E9AC
+ lsls r0, r2, 16
+ asrs r0, 16
+ mov r2, r9
+ subs r0, r2
+_0812E9A2:
+ strh r0, [r7, 0xC]
+ strh r1, [r7, 0x8]
+ b _0812E9CA
+ .align 2, 0
+_0812E9A8: .4byte 0xfffffe00
+_0812E9AC:
+ lsls r0, r2, 16
+ asrs r0, 16
+ mov r3, r9
+ subs r0, r3, r0
+ strh r0, [r7, 0xC]
+ b _0812E9CA
+_0812E9B8:
+ ldrh r0, [r7, 0x26]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8078F40
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _0812EA40
+_0812E9CA:
+ 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_8078F9C
+ ldr r2, _0812EA38 @ =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 _0812E9FE
+ adds r0, 0x3F
+_0812E9FE:
+ 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 _0812EA40
+ ldrh r1, [r7, 0x20]
+ movs r3, 0x20
+ ldrsh r0, [r7, r3]
+ cmp r0, 0
+ beq _0812EA3C
+ 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 _0812EA40
+ movs r0, 0x10
+ strh r0, [r7, 0x24]
+ b _0812EA40
+ .align 2, 0
+_0812EA38: .4byte gSprites
+_0812EA3C:
+ movs r0, 0x2
+ strh r0, [r7, 0x8]
+_0812EA40:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812E8B4
+
+ thumb_func_start sub_812EA4C
+sub_812EA4C: @ 812EA4C
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0812EAAC
+ ldr r6, _0812EAA4 @ =gBattleAnimArgs
+ movs r2, 0x4
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ bne _0812EA80
+ ldr r4, _0812EAA8 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+_0812EA80:
+ 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 _0812EB0A
+ .align 2, 0
+_0812EAA4: .4byte gBattleAnimArgs
+_0812EAA8: .4byte gBattleAnimPlayerMonIndex
+_0812EAAC:
+ 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 _0812EAEA
+ movs r0, 0x26
+ ldrsh r1, [r5, r0]
+ movs r2, 0x34
+ ldrsh r0, [r5, r2]
+ cmn r1, r0
+ ble _0812EAEA
+ 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]
+_0812EAEA:
+ 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 _0812EB0A
+ adds r0, r5, 0
+ bl move_anim_8072740
+_0812EB0A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812EA4C
+
+ thumb_func_start sub_812EB10
+sub_812EB10: @ 812EB10
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r7, r0, 0
+ ldr r1, _0812EB40 @ =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 _0812EC1C
+ ldr r0, _0812EB44 @ =gBattleAnimArgs
+ movs r3, 0
+ ldrsh r1, [r0, r3]
+ mov r8, r0
+ cmp r1, 0
+ bne _0812EB4C
+ ldr r0, _0812EB48 @ =gBattleAnimPlayerMonIndex
+ b _0812EB4E
+ .align 2, 0
+_0812EB40: .4byte gTasks
+_0812EB44: .4byte gBattleAnimArgs
+_0812EB48: .4byte gBattleAnimPlayerMonIndex
+_0812EB4C:
+ ldr r0, _0812EB88 @ =gBattleAnimEnemyMonIndex
+_0812EB4E:
+ ldrb r0, [r0]
+ strh r0, [r2, 0x1E]
+ mov r1, r8
+ ldrb r0, [r1]
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _0812EB8C @ =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_8078E70
+ mov r2, r8
+ movs r3, 0x2
+ ldrsh r0, [r2, r3]
+ cmp r0, 0x1
+ beq _0812EBB0
+ cmp r0, 0x1
+ bgt _0812EB90
+ cmp r0, 0
+ beq _0812EB98
+ lsls r2, r5, 4
+ b _0812EBF8
+ .align 2, 0
+_0812EB88: .4byte gBattleAnimEnemyMonIndex
+_0812EB8C: .4byte gTasks
+_0812EB90:
+ cmp r0, 0x2
+ beq _0812EBBA
+ lsls r2, r5, 4
+ b _0812EBF8
+_0812EB98:
+ 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_8079A64
+ lsls r2, r5, 4
+ b _0812EBF8
+_0812EBB0:
+ movs r2, 0x98
+ lsls r2, 1
+ movs r3, 0xF0
+ lsls r3, 4
+ b _0812EBC2
+_0812EBBA:
+ movs r2, 0x98
+ lsls r2, 1
+ movs r3, 0xF1
+ lsls r3, 8
+_0812EBC2:
+ adds r0, r5, 0
+ movs r1, 0xD0
+ bl obj_id_set_rotscale
+ adds r0, r5, 0
+ bl sub_8079A64
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812EBE8
+ ldrb r0, [r6, 0x1E]
+ bl GetBankSide
+ lsls r0, 24
+ lsls r2, r5, 4
+ cmp r0, 0
+ bne _0812EBF8
+_0812EBE8:
+ ldr r0, _0812EC14 @ =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]
+_0812EBF8:
+ ldr r1, _0812EC14 @ =gSprites
+ adds r0, r2, r5
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0x2
+ strh r1, [r0, 0x24]
+ ldr r0, _0812EC18 @ =gTasks
+ adds r1, r4, r7
+ lsls r1, 3
+ adds r1, r0
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _0812EC68
+ .align 2, 0
+_0812EC14: .4byte gSprites
+_0812EC18: .4byte gTasks
+_0812EC1C:
+ 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 _0812EC40
+ strh r4, [r2, 0xC]
+ ldr r0, _0812EC74 @ =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]
+_0812EC40:
+ ldrh r0, [r2, 0xA]
+ adds r0, 0x1
+ strh r0, [r2, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ bne _0812EC68
+ adds r0, r5, 0
+ bl sub_8078F40
+ ldr r1, _0812EC74 @ =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
+_0812EC68:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812EC74: .4byte gSprites
+ thumb_func_end sub_812EB10
+
+ thumb_func_start sub_812EC78
+sub_812EC78: @ 812EC78
+ 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, _0812ECC4 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _0812ECC8 @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+ bl Random
+ ldr r5, _0812ECCC @ =0x000001ff
+ ands r5, r0
+ bl Random
+ movs r1, 0xFF
+ ands r1, r0
+ movs r0, 0x1
+ ands r0, r5
+ cmp r0, 0
+ beq _0812ECD0
+ movs r2, 0xBC
+ lsls r2, 3
+ adds r0, r5, r2
+ b _0812ECD8
+ .align 2, 0
+_0812ECC4: .4byte 0x000003ff
+_0812ECC8: .4byte 0xfffffc00
+_0812ECCC: .4byte 0x000001ff
+_0812ECD0:
+ movs r3, 0xBC
+ lsls r3, 3
+ adds r0, r3, 0
+ subs r0, r5
+_0812ECD8:
+ strh r0, [r4, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0812ECEA
+ movs r2, 0x90
+ lsls r2, 3
+ adds r0, r1, r2
+ b _0812ECF2
+_0812ECEA:
+ movs r3, 0x90
+ lsls r3, 3
+ adds r0, r3, 0
+ subs r0, r1
+_0812ECF2:
+ strh r0, [r4, 0x30]
+ ldr r0, _0812ED04 @ =gBattleAnimArgs
+ ldrh r0, [r0]
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0812ED0C
+ ldr r0, _0812ED08 @ =0x0000fff8
+ b _0812ED0E
+ .align 2, 0
+_0812ED04: .4byte gBattleAnimArgs
+_0812ED08: .4byte 0x0000fff8
+_0812ED0C:
+ movs r0, 0xF8
+_0812ED0E:
+ strh r0, [r4, 0x20]
+ movs r0, 0x68
+ strh r0, [r4, 0x22]
+ ldr r0, _0812ED20 @ =sub_812ED24
+ str r0, [r4, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812ED20: .4byte sub_812ED24
+ thumb_func_end sub_812EC78
+
+ thumb_func_start sub_812ED24
+sub_812ED24: @ 812ED24
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x32
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0812ED3C
+ ldrh r3, [r4, 0x2E]
+ lsls r0, r3, 16
+ asrs r0, 24
+ ldrh r1, [r4, 0x24]
+ adds r0, r1
+ b _0812ED46
+_0812ED3C:
+ ldrh r3, [r4, 0x2E]
+ lsls r1, r3, 16
+ asrs r1, 24
+ ldrh r0, [r4, 0x24]
+ subs r0, r1
+_0812ED46:
+ 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 _0812ED6A
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+_0812ED6A:
+ ldrh r0, [r4, 0x34]
+ adds r0, 0x1
+ strh r0, [r4, 0x34]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1F
+ bne _0812ED7E
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0812ED7E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812ED24
+
+ thumb_func_start sub_812ED84
+sub_812ED84: @ 812ED84
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _0812EDE4 @ =REG_WINOUT
+ ldr r2, _0812EDE8 @ =0x00001f3f
+ adds r0, r2, 0
+ strh r0, [r1]
+ movs r2, 0x80
+ lsls r2, 19
+ ldrh r0, [r2]
+ movs r3, 0x80
+ lsls r3, 8
+ adds r1, r3, 0
+ orrs r0, r1
+ strh r0, [r2]
+ ldr r0, _0812EDEC @ =gUnknown_030042C4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _0812EDF0 @ =gUnknown_03004240
+ strh r1, [r0]
+ ldr r0, _0812EDF4 @ =REG_WIN0H
+ strh r1, [r0]
+ adds r0, 0x4
+ strh r1, [r0]
+ ldr r0, _0812EDF8 @ =gBattleAnimArgs
+ ldrh r0, [r0, 0x4]
+ strh r0, [r4, 0x2E]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8078764
+ ldrb r1, [r4, 0x1]
+ movs r0, 0xD
+ negs r0, r0
+ ands r0, r1
+ movs r1, 0x8
+ orrs r0, r1
+ strb r0, [r4, 0x1]
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+ ldr r0, _0812EDFC @ =sub_812EE00
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812EDE4: .4byte REG_WINOUT
+_0812EDE8: .4byte 0x00001f3f
+_0812EDEC: .4byte gUnknown_030042C4
+_0812EDF0: .4byte gUnknown_03004240
+_0812EDF4: .4byte REG_WIN0H
+_0812EDF8: .4byte gBattleAnimArgs
+_0812EDFC: .4byte sub_812EE00
+ thumb_func_end sub_812ED84
+
+ thumb_func_start sub_812EE00
+sub_812EE00: @ 812EE00
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _0812EE3E
+ cmp r0, 0x1
+ bgt _0812EE16
+ cmp r0, 0
+ beq _0812EE20
+ b _0812EE94
+_0812EE16:
+ cmp r0, 0x2
+ beq _0812EE54
+ cmp r0, 0x3
+ beq _0812EE76
+ b _0812EE94
+_0812EE20:
+ 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 _0812EE94
+ b _0812EE6E
+_0812EE3E:
+ ldrh r0, [r4, 0x2E]
+ subs r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0812EE94
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl ChangeSpriteAffineAnim
+ b _0812EE6E
+_0812EE54:
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0812EE94
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_0812EE6E:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ b _0812EE94
+_0812EE76:
+ ldr r1, _0812EE9C @ =REG_WINOUT
+ ldr r2, _0812EEA0 @ =0x00003f3f
+ adds r0, r2, 0
+ strh r0, [r1]
+ movs r2, 0x80
+ lsls r2, 19
+ ldrh r0, [r2]
+ movs r3, 0x80
+ lsls r3, 8
+ adds r1, r3, 0
+ eors r0, r1
+ strh r0, [r2]
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0812EE94:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812EE9C: .4byte REG_WINOUT
+_0812EEA0: .4byte 0x00003f3f
+ thumb_func_end sub_812EE00
+
+ thumb_func_start sub_812EEA4
+sub_812EEA4: @ 812EEA4
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldr r5, _0812EEE0 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x20]
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ ldr r1, _0812EEE4 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ strh r0, [r4, 0x2E]
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0x30]
+ ldr r1, _0812EEE8 @ =sub_812EEEC
+ str r1, [r4, 0x1C]
+ adds r0, r4, 0
+ bl _call_via_r1
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812EEE0: .4byte gBattleAnimPlayerMonIndex
+_0812EEE4: .4byte gBattleAnimArgs
+_0812EEE8: .4byte sub_812EEEC
+ thumb_func_end sub_812EEA4
+
+ thumb_func_start sub_812EEEC
+sub_812EEEC: @ 812EEEC
+ 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 _0812EF26
+ asrs r0, r1, 16
+ cmp r0, 0xC3
+ ble _0812EF38
+_0812EF26:
+ ldr r0, _0812EF34 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl sub_8079E90
+ subs r0, 0x1
+ b _0812EF42
+ .align 2, 0
+_0812EF34: .4byte gBattleAnimPlayerMonIndex
+_0812EF38:
+ ldr r0, _0812EF84 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl sub_8079E90
+ adds r0, 0x1
+_0812EF42:
+ adds r1, r4, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ movs r3, 0x38
+ ldrsh r2, [r4, r3]
+ cmp r2, 0
+ bne _0812EF88
+ 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 _0812EFB8
+ strh r2, [r4, 0x36]
+ movs r0, 0x1
+ strh r0, [r4, 0x38]
+ b _0812EFB8
+ .align 2, 0
+_0812EF84: .4byte gBattleAnimPlayerMonIndex
+_0812EF88:
+ cmp r2, 0x1
+ bne _0812EFB8
+ ldr r1, _0812EFC0 @ =0xfffffc00
+ adds r0, r1, 0
+ ldrh r2, [r4, 0x32]
+ adds r0, r2
+ strh r0, [r4, 0x32]
+ ldr r3, _0812EFC4 @ =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 _0812EFB8
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0812EFB8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812EFC0: .4byte 0xfffffc00
+_0812EFC4: .4byte 0xffffff00
+ thumb_func_end sub_812EEEC
+
+ thumb_func_start sub_812EFC8
+sub_812EFC8: @ 812EFC8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x10]
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812F004
+ movs r0, 0x1
+ str r0, [sp, 0x14]
+ ldr r0, _0812F000 @ =0x02019348
+ ldr r1, [r0, 0x10]
+ mov r9, r1
+ ldr r2, [r0, 0xC]
+ mov r8, r2
+ ldrh r6, [r0, 0x2]
+ movs r3, 0x14
+ b _0812F13C
+ .align 2, 0
+_0812F000: .4byte 0x02019348
+_0812F004:
+ ldr r0, _0812F070 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812F0AC
+ movs r0, 0
+ str r0, [sp, 0x14]
+ ldr r6, _0812F074 @ =gBattlePartyID
+ ldr r4, _0812F078 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ movs r5, 0x64
+ muls r0, r5
+ ldr r7, _0812F07C @ =gPlayerParty
+ adds r0, r7
+ movs r1, 0
+ bl GetMonData
+ mov r9, 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 r8, r0
+ ldrb r2, [r4]
+ lsls r1, r2, 2
+ ldr r0, _0812F080 @ =0x02017800
+ adds r1, r0
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _0812F0A4
+ adds r0, r2, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812F084
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ adds r0, r7
+ b _0812F092
+ .align 2, 0
+_0812F070: .4byte gBattleAnimPlayerMonIndex
+_0812F074: .4byte gBattlePartyID
+_0812F078: .4byte gBattleAnimEnemyMonIndex
+_0812F07C: .4byte gPlayerParty
+_0812F080: .4byte 0x02017800
+_0812F084:
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ ldr r1, _0812F0A0 @ =gEnemyParty
+ adds r0, r1
+_0812F092:
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ b _0812F0A6
+ .align 2, 0
+_0812F0A0: .4byte gEnemyParty
+_0812F0A4:
+ ldrh r6, [r1, 0x2]
+_0812F0A6:
+ movs r1, 0x14
+ mov r10, r1
+ b _0812F13E
+_0812F0AC:
+ movs r2, 0x1
+ str r2, [sp, 0x14]
+ ldr r6, _0812F10C @ =gBattlePartyID
+ ldr r4, _0812F110 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ movs r5, 0x64
+ muls r0, r5
+ ldr r7, _0812F114 @ =gEnemyParty
+ adds r0, r7
+ movs r1, 0
+ bl GetMonData
+ mov r9, 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 r8, r0
+ ldrb r2, [r4]
+ lsls r1, r2, 2
+ ldr r0, _0812F118 @ =0x02017800
+ adds r1, r0
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _0812F138
+ adds r0, r2, 0
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812F120
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ ldr r1, _0812F11C @ =gPlayerParty
+ adds r0, r1
+ b _0812F12C
+ .align 2, 0
+_0812F10C: .4byte gBattlePartyID
+_0812F110: .4byte gBattleAnimEnemyMonIndex
+_0812F114: .4byte gEnemyParty
+_0812F118: .4byte 0x02017800
+_0812F11C: .4byte gPlayerParty
+_0812F120:
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ muls r0, r5
+ adds r0, r7
+_0812F12C:
+ movs r1, 0xB
+ bl GetMonData
+ lsls r0, 16
+ lsrs r6, r0, 16
+ b _0812F13A
+_0812F138:
+ ldrh r6, [r1, 0x2]
+_0812F13A:
+ ldr r3, _0812F218 @ =0x0000ffec
+_0812F13C:
+ mov r10, r3
+_0812F13E:
+ ldr r0, _0812F21C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl sub_8079ED4
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r5, _0812F21C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8077ABC
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r0, [r5]
+ movs r1, 0x1
+ bl sub_8077ABC
+ lsls r0, 24
+ mov r2, r10
+ 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, r9
+ str r3, [sp, 0x8]
+ mov r0, r8
+ str r0, [sp, 0xC]
+ adds r0, r6, 0
+ ldr r1, [sp, 0x14]
+ movs r2, 0
+ adds r3, r4, 0
+ bl sub_8079F44
+ adds r6, r0, 0
+ lsls r6, 24
+ lsrs r6, 24
+ ldr r0, _0812F220 @ =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, _0812F224 @ =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]
+ ldr r1, _0812F228 @ =REG_BLDCNT
+ movs r2, 0xFD
+ lsls r2, 6
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r3, _0812F22C @ =REG_BLDALPHA
+ ldr r0, _0812F230 @ =gTasks
+ ldr r2, [sp, 0x10]
+ lsls r1, r2, 2
+ adds r1, r2
+ lsls r1, 3
+ adds r1, r0
+ ldrh r2, [r1, 0xA]
+ movs r0, 0x10
+ subs r0, r2
+ lsls r0, 8
+ orrs r0, r2
+ strh r0, [r3]
+ strh r6, [r1, 0x8]
+ ldr r0, _0812F234 @ =sub_812F238
+ str r0, [r1]
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812F218: .4byte 0x0000ffec
+_0812F21C: .4byte gBattleAnimPlayerMonIndex
+_0812F220: .4byte gSprites
+_0812F224: .4byte 0x00007fff
+_0812F228: .4byte REG_BLDCNT
+_0812F22C: .4byte REG_BLDALPHA
+_0812F230: .4byte gTasks
+_0812F234: .4byte sub_812F238
+ thumb_func_end sub_812EFC8
+
+ thumb_func_start sub_812F238
+sub_812F238: @ 812F238
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0812F284 @ =gTasks
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ adds r3, r1, r2
+ ldrh r0, [r3, 0x1C]
+ adds r1, r0, 0x1
+ strh r1, [r3, 0x1C]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _0812F280
+ movs r0, 0
+ strh r0, [r3, 0x1C]
+ ldrh r1, [r3, 0xA]
+ adds r1, 0x1
+ strh r1, [r3, 0xA]
+ ldr r2, _0812F288 @ =REG_BLDALPHA
+ movs r0, 0x10
+ subs r0, r1
+ lsls r0, 8
+ orrs r1, r0
+ strh r1, [r2]
+ movs r1, 0xA
+ ldrsh r0, [r3, r1]
+ cmp r0, 0xA
+ bne _0812F280
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r3, 0x1C]
+ strh r0, [r3, 0x1E]
+ ldr r0, _0812F28C @ =sub_812F290
+ str r0, [r3]
+_0812F280:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812F284: .4byte gTasks
+_0812F288: .4byte REG_BLDALPHA
+_0812F28C: .4byte sub_812F290
+ thumb_func_end sub_812F238
+
+ thumb_func_start sub_812F290
+sub_812F290: @ 812F290
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _0812F308 @ =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, _0812F30C @ =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_8078FDC
+ ldrh r0, [r5, 0x20]
+ adds r0, 0x1
+ strh r0, [r5, 0x20]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ bne _0812F2FE
+ adds r0, r6, 0
+ bl sub_8079098
+ adds r0, r6, 0
+ bl sub_807A0F4
+ ldr r0, _0812F310 @ =sub_8078634
+ str r0, [r5]
+_0812F2FE:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812F308: .4byte gTasks
+_0812F30C: .4byte gSprites
+_0812F310: .4byte sub_8078634
+ thumb_func_end sub_812F290
+
+ thumb_func_start sub_812F314
+sub_812F314: @ 812F314
+ 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, _0812F334 @ =gTasks
+ adds r4, r1, r0
+ ldr r0, _0812F338 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _0812F340
+ ldr r0, _0812F33C @ =gBattleAnimPlayerMonIndex
+ b _0812F342
+ .align 2, 0
+_0812F334: .4byte gTasks
+_0812F338: .4byte gBattleAnimArgs
+_0812F33C: .4byte gBattleAnimPlayerMonIndex
+_0812F340:
+ ldr r0, _0812F3C0 @ =gBattleAnimEnemyMonIndex
+_0812F342:
+ 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 GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0812F374
+ movs r2, 0x18
+ ldrsh r0, [r4, r2]
+ negs r0, r0
+ strh r0, [r4, 0x18]
+_0812F374:
+ adds r0, r5, 0
+ bl sub_8077FC0
+ lsls r0, 24
+ lsrs r0, 24
+ subs r0, 0x22
+ strh r0, [r4, 0x22]
+ cmp r0, 0
+ bge _0812F388
+ strh r6, [r4, 0x22]
+_0812F388:
+ ldrh r0, [r4, 0x22]
+ adds r0, 0x42
+ strh r0, [r4, 0x24]
+ ldr r0, _0812F3C4 @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x26]
+ adds r0, r5, 0
+ bl GetBankIdentity_permutated
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0812F3DC
+ ldr r0, _0812F3C8 @ =REG_BG1HOFS
+ str r0, [sp]
+ ldr r1, _0812F3CC @ =REG_BLDCNT
+ ldr r2, _0812F3D0 @ =0x00003f42
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r0, _0812F3D4 @ =gUnknown_030042C0
+ ldrh r5, [r0]
+ ldr r0, _0812F3D8 @ =gUnknown_030041B4
+ b _0812F3EE
+ .align 2, 0
+_0812F3C0: .4byte gBattleAnimEnemyMonIndex
+_0812F3C4: .4byte gBattleAnimArgs
+_0812F3C8: .4byte REG_BG1HOFS
+_0812F3CC: .4byte REG_BLDCNT
+_0812F3D0: .4byte 0x00003f42
+_0812F3D4: .4byte gUnknown_030042C0
+_0812F3D8: .4byte gUnknown_030041B4
+_0812F3DC:
+ ldr r0, _0812F454 @ =REG_BG2HOFS
+ str r0, [sp]
+ ldr r1, _0812F458 @ =REG_BLDCNT
+ ldr r2, _0812F45C @ =0x00003f44
+ adds r0, r2, 0
+ strh r0, [r1]
+ ldr r0, _0812F460 @ =gUnknown_03004288
+ ldrh r5, [r0]
+ ldr r0, _0812F464 @ =gUnknown_03004280
+_0812F3EE:
+ ldrh r3, [r0]
+ movs r7, 0
+ movs r2, 0
+ ldr r6, _0812F468 @ =gUnknown_03004DE0
+ movs r0, 0xF0
+ lsls r0, 3
+ adds r0, r6
+ mov r12, r0
+_0812F3FE:
+ 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 _0812F3FE
+ ldr r0, _0812F46C @ =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 sub_80895F8
+ ldr r0, _0812F470 @ =sub_812F474
+ str r0, [r4]
+ add sp, 0xC
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812F454: .4byte REG_BG2HOFS
+_0812F458: .4byte REG_BLDCNT
+_0812F45C: .4byte 0x00003f44
+_0812F460: .4byte gUnknown_03004288
+_0812F464: .4byte gUnknown_03004280
+_0812F468: .4byte gUnknown_03004DE0
+_0812F46C: .4byte 0xa6600001
+_0812F470: .4byte sub_812F474
+ thumb_func_end sub_812F314
+
+ thumb_func_start sub_812F474
+sub_812F474: @ 812F474
+ 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, _0812F4A8 @ =gTasks
+ adds r6, r0, r1
+ ldrb r0, [r6, 0x12]
+ bl GetBankIdentity_permutated
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0812F4B4
+ ldr r0, _0812F4AC @ =gUnknown_030042C0
+ ldrh r0, [r0]
+ str r0, [sp, 0x4]
+ ldr r0, _0812F4B0 @ =gUnknown_030041B4
+ b _0812F4BC
+ .align 2, 0
+_0812F4A8: .4byte gTasks
+_0812F4AC: .4byte gUnknown_030042C0
+_0812F4B0: .4byte gUnknown_030041B4
+_0812F4B4:
+ ldr r0, _0812F4D4 @ =gUnknown_03004288
+ ldrh r0, [r0]
+ str r0, [sp, 0x4]
+ ldr r0, _0812F4D8 @ =gUnknown_03004280
+_0812F4BC:
+ ldrh r0, [r0]
+ str r0, [sp, 0x8]
+ movs r1, 0x8
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x1
+ bne _0812F4CA
+ b _0812F6A6
+_0812F4CA:
+ cmp r0, 0x1
+ bgt _0812F4DC
+ cmp r0, 0
+ beq _0812F4EA
+ b _0812F712
+ .align 2, 0
+_0812F4D4: .4byte gUnknown_03004288
+_0812F4D8: .4byte gUnknown_03004280
+_0812F4DC:
+ cmp r0, 0x2
+ bne _0812F4E2
+ b _0812F6C4
+_0812F4E2:
+ cmp r0, 0x3
+ bne _0812F4E8
+ b _0812F70C
+_0812F4E8:
+ b _0812F712
+_0812F4EA:
+ 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 _0812F60A
+ ldr r0, _0812F660 @ =gUnknown_03004DC0
+ 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]
+_0812F55A:
+ 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, _0812F664 @ =gUnknown_03004DE0
+ 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, _0812F664 @ =gUnknown_03004DE0
+ 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, _0812F668 @ =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, _0812F66C @ =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 _0812F55A
+_0812F60A:
+ lsls r1, r2, 17
+ cmp r1, 0
+ blt _0812F636
+ ldr r4, _0812F664 @ =gUnknown_03004DE0
+ 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
+_0812F622:
+ 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 _0812F622
+_0812F636:
+ ldrh r0, [r6, 0x14]
+ adds r0, 0x1
+ strh r0, [r6, 0x14]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3F
+ ble _0812F69C
+ 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 _0812F670
+ ldrh r0, [r6, 0xE]
+ subs r0, 0x1
+ strh r0, [r6, 0xE]
+ b _0812F676
+ .align 2, 0
+_0812F660: .4byte gUnknown_03004DC0
+_0812F664: .4byte gUnknown_03004DE0
+_0812F668: .4byte gSineTable
+_0812F66C: .4byte 0xffff0000
+_0812F670:
+ ldrh r0, [r6, 0x10]
+ adds r0, 0x1
+ strh r0, [r6, 0x10]
+_0812F676:
+ ldr r0, _0812F698 @ =REG_BLDALPHA
+ ldrh r1, [r6, 0x10]
+ lsls r1, 8
+ ldrh r2, [r6, 0xE]
+ orrs r1, r2
+ strh r1, [r0]
+ movs r2, 0xE
+ ldrsh r1, [r6, r2]
+ cmp r1, 0
+ bne _0812F712
+ movs r3, 0x10
+ ldrsh r0, [r6, r3]
+ cmp r0, 0x10
+ bne _0812F712
+ strh r1, [r6, 0xC]
+ strh r1, [r6, 0xE]
+ b _0812F700
+ .align 2, 0
+_0812F698: .4byte REG_BLDALPHA
+_0812F69C:
+ ldrh r0, [r6, 0x18]
+ ldrh r7, [r6, 0x16]
+ adds r0, r7
+ strh r0, [r6, 0x16]
+ b _0812F712
+_0812F6A6:
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xC
+ ble _0812F712
+ ldr r1, _0812F6C0 @ =gUnknown_03004DC0
+ movs r0, 0x3
+ strb r0, [r1, 0x15]
+ movs r0, 0
+ strh r0, [r6, 0xC]
+ b _0812F700
+ .align 2, 0
+_0812F6C0: .4byte gUnknown_03004DC0
+_0812F6C4:
+ ldrh r0, [r6, 0xC]
+ adds r0, 0x1
+ strh r0, [r6, 0xC]
+ movs r1, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _0812F6DA
+ ldrh r0, [r6, 0xE]
+ adds r0, 0x1
+ strh r0, [r6, 0xE]
+ b _0812F6E0
+_0812F6DA:
+ ldrh r0, [r6, 0x10]
+ subs r0, 0x1
+ strh r0, [r6, 0x10]
+_0812F6E0:
+ ldr r2, _0812F708 @ =REG_BLDALPHA
+ ldrh r0, [r6, 0x10]
+ lsls r0, 8
+ ldrh r1, [r6, 0xE]
+ orrs r0, r1
+ strh r0, [r2]
+ movs r1, 0xE
+ ldrsh r0, [r6, r1]
+ cmp r0, 0x10
+ bne _0812F712
+ movs r2, 0x10
+ ldrsh r0, [r6, r2]
+ cmp r0, 0
+ bne _0812F712
+ strh r0, [r6, 0xC]
+ strh r0, [r6, 0xE]
+_0812F700:
+ ldrh r0, [r6, 0x8]
+ adds r0, 0x1
+ strh r0, [r6, 0x8]
+ b _0812F712
+ .align 2, 0
+_0812F708: .4byte REG_BLDALPHA
+_0812F70C:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_0812F712:
+ 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_812F474
+
+ thumb_func_start sub_812F724
+sub_812F724: @ 812F724
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _0812F75C @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldr r0, _0812F760 @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl obj_id_for_side_relative_to_move
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r4, 0x26]
+ ldr r2, _0812F764 @ =gUnknown_08402750
+ adds r0, r4, 0
+ bl sub_80798F4
+ ldr r0, _0812F768 @ =sub_812F76C
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812F75C: .4byte gTasks
+_0812F760: .4byte gBattleAnimArgs
+_0812F764: .4byte gUnknown_08402750
+_0812F768: .4byte sub_812F76C
+ thumb_func_end sub_812F724
+
+ thumb_func_start sub_812F76C
+sub_812F76C: @ 812F76C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r2, _0812F7C4 @ =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 _0812F7D0
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _0812F7E0
+ 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 _0812F7D0
+ ldr r2, _0812F7C8 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _0812F7CC @ =0x0000ffff
+ strh r1, [r0, 0x24]
+ b _0812F7E0
+ .align 2, 0
+_0812F7C4: .4byte gTasks
+_0812F7C8: .4byte gSprites
+_0812F7CC: .4byte 0x0000ffff
+_0812F7D0:
+ ldr r2, _0812F800 @ =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]
+_0812F7E0:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r6
+ bl sub_807992C
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812F7F8
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_0812F7F8:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812F800: .4byte gSprites
+ thumb_func_end sub_812F76C
+
+ thumb_func_start sub_812F804
+sub_812F804: @ 812F804
+ 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_812F804
+
+ thumb_func_start sub_812F86C
+sub_812F86C: @ 812F86C
+ 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_812F86C
+
+ thumb_func_start sub_812F88C
+sub_812F88C: @ 812F88C
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ ldrh r6, [r4, 0x20]
+ ldrh r5, [r4, 0x22]
+ bl sub_8078650
+ ldr r0, _0812F8D4 @ =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_812F804
+ movs r0, 0
+ strh r0, [r4, 0x2E]
+ ldr r0, _0812F8D8 @ =sub_812F8DC
+ str r0, [r4, 0x1C]
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812F8D4: .4byte gBattleAnimArgs
+_0812F8D8: .4byte sub_812F8DC
+ thumb_func_end sub_812F88C
+
+ thumb_func_start sub_812F8DC
+sub_812F8DC: @ 812F8DC
+ 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_812F86C
+ adds r0, r4, 0
+ movs r1, 0x8
+ bl Sin
+ strh r0, [r5, 0x26]
+ movs r1, 0x2E
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x3A
+ ble _0812F942
+ ldrh r0, [r5, 0x30]
+ adds r0, 0x1
+ strh r0, [r5, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _0812F942
+ 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 _0812F942
+ adds r0, r5, 0
+ bl move_anim_8074EE0
+_0812F942:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812F8DC
+
+ thumb_func_start sub_812F948
+sub_812F948: @ 812F948
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _0812F9A0 @ =gBattleAnimArgs
+ ldrh r0, [r6, 0x6]
+ strh r0, [r5, 0x2E]
+ ldrb r1, [r6]
+ adds r0, r5, 0
+ bl StartSpriteAffineAnim
+ ldr r0, _0812F9A4 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812F96E
+ ldrh r0, [r6, 0x2]
+ negs r0, r0
+ strh r0, [r6, 0x2]
+_0812F96E:
+ ldr r4, _0812F9A8 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ 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_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r6, [r6, 0x4]
+ adds r0, r6
+ strh r0, [r5, 0x22]
+ ldr r0, _0812F9AC @ =sub_80DA48C
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812F9A0: .4byte gBattleAnimArgs
+_0812F9A4: .4byte gBattleAnimEnemyMonIndex
+_0812F9A8: .4byte gBattleAnimPlayerMonIndex
+_0812F9AC: .4byte sub_80DA48C
+ thumb_func_end sub_812F948
+
+ thumb_func_start sub_812F9B0
+sub_812F9B0: @ 812F9B0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r7, 0
+ ldr r2, _0812FA00 @ =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 _0812FA32
+ 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 _0812FA32
+ movs r2, 0x1A
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _0812FA04
+ ldrh r0, [r3, 0x10]
+ strh r0, [r3, 0x1A]
+ negs r0, r0
+ strh r0, [r3, 0x10]
+ b _0812FA06
+ .align 2, 0
+_0812FA00: .4byte gTasks
+_0812FA04:
+ strh r7, [r3, 0x1A]
+_0812FA06:
+ 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 _0812FA22
+ ldrh r0, [r1, 0x12]
+ strh r0, [r1, 0x1C]
+ negs r0, r0
+ strh r0, [r1, 0x12]
+ b _0812FA26
+_0812FA22:
+ movs r0, 0
+ strh r0, [r1, 0x1C]
+_0812FA26:
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ add r0, r8
+ ldrh r1, [r0, 0x22]
+ strh r1, [r0, 0xA]
+_0812FA32:
+ 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 _0812FA70
+ ldr r3, _0812FA6C @ =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 _0812FA86
+ .align 2, 0
+_0812FA6C: .4byte gSprites
+_0812FA70:
+ ldr r2, _0812FAB4 @ =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]
+_0812FA86:
+ 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 _0812FAB8
+ 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 _0812FACA
+ .align 2, 0
+_0812FAB4: .4byte gSprites
+_0812FAB8:
+ 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
+_0812FACA:
+ 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 _0812FAEA
+ adds r0, r5, 0
+ bl DestroyTask
+ ldr r1, _0812FAF4 @ =gAnimVisualTaskCount
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+_0812FAEA:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812FAF4: .4byte gAnimVisualTaskCount
+ thumb_func_end sub_812F9B0
+
+ thumb_func_start sub_812FAF8
+sub_812FAF8: @ 812FAF8
+ 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, _0812FB4C @ =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 _0812FB7E
+ 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 _0812FB7E
+ movs r2, 0x1A
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _0812FB50
+ ldrh r0, [r3, 0x10]
+ strh r0, [r3, 0x1A]
+ negs r0, r0
+ strh r0, [r3, 0x10]
+ b _0812FB52
+ .align 2, 0
+_0812FB4C: .4byte gTasks
+_0812FB50:
+ strh r7, [r3, 0x1A]
+_0812FB52:
+ 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 _0812FB6E
+ ldrh r0, [r1, 0x12]
+ strh r0, [r1, 0x1C]
+ negs r0, r0
+ strh r0, [r1, 0x12]
+ b _0812FB72
+_0812FB6E:
+ movs r0, 0
+ strh r0, [r1, 0x1C]
+_0812FB72:
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ add r0, r8
+ ldrh r1, [r0, 0x22]
+ strh r1, [r0, 0xA]
+_0812FB7E:
+ lsls r3, r6, 2
+ adds r0, r3, r6
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ ldrh r2, [r4, 0xC]
+ ldr r1, _0812FBD0 @ =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 _0812FBD8
+ ldr r3, _0812FBD4 @ =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 _0812FBEE
+ .align 2, 0
+_0812FBD0: .4byte 0x00007fff
+_0812FBD4: .4byte gSprites
+_0812FBD8:
+ ldr r2, _0812FC1C @ =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]
+_0812FBEE:
+ 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 _0812FC20
+ 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 _0812FC32
+ .align 2, 0
+_0812FC1C: .4byte gSprites
+_0812FC20:
+ 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
+_0812FC32:
+ 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 _0812FC58
+ movs r0, 0x1E
+ strh r0, [r2, 0x8]
+ movs r0, 0
+ strh r0, [r2, 0x22]
+ ldr r0, _0812FC64 @ =sub_812F9B0
+ str r0, [r2]
+_0812FC58:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812FC64: .4byte sub_812F9B0
+ thumb_func_end sub_812FAF8
+
+ thumb_func_start sub_812FC68
+sub_812FC68: @ 812FC68
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r0, _0812FCC8 @ =gTasks
+ mov r8, r0
+ lsls r7, r6, 2
+ adds r0, r7, r6
+ lsls r0, 3
+ mov r1, r8
+ adds r4, r0, r1
+ ldr r1, _0812FCCC @ =gObjectBankIDs
+ ldr r2, _0812FCD0 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r2]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r4, 0x26]
+ ldr r5, _0812FCD4 @ =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 _0812FCAC
+ ldrh r0, [r4, 0x14]
+ ldr r3, _0812FCD8 @ =0xffff8000
+ adds r1, r3, 0
+ orrs r0, r1
+ strh r0, [r4, 0x14]
+_0812FCAC:
+ ldrb r0, [r2]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812FCDC
+ ldrh r0, [r5, 0x2]
+ strh r0, [r4, 0xC]
+ ldrh r0, [r5, 0x4]
+ strh r0, [r4, 0xE]
+ mov r3, r8
+ adds r4, r7, 0
+ b _0812FD4C
+ .align 2, 0
+_0812FCC8: .4byte gTasks
+_0812FCCC: .4byte gObjectBankIDs
+_0812FCD0: .4byte gBattleAnimPlayerMonIndex
+_0812FCD4: .4byte gBattleAnimArgs
+_0812FCD8: .4byte 0xffff8000
+_0812FCDC:
+ movs r7, 0x2
+ ldrsh r0, [r5, r7]
+ movs r1, 0x80
+ lsls r1, 8
+ ands r0, r1
+ cmp r0, 0
+ beq _0812FCF8
+ ldrh r1, [r5, 0x2]
+ ldr r0, _0812FCF4 @ =0x00007fff
+ ands r0, r1
+ b _0812FD00
+ .align 2, 0
+_0812FCF4: .4byte 0x00007fff
+_0812FCF8:
+ ldrh r0, [r5, 0x2]
+ ldr r2, _0812FD28 @ =0xffff8000
+ adds r1, r2, 0
+ orrs r0, r1
+_0812FD00:
+ strh r0, [r4, 0xC]
+ ldr r0, _0812FD2C @ =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 _0812FD38
+ ldr r3, _0812FD30 @ =gTasks
+ lsls r4, r6, 2
+ adds r1, r4, r6
+ lsls r1, 3
+ adds r1, r3
+ ldrh r2, [r5, 0x4]
+ ldr r0, _0812FD34 @ =0x00007fff
+ ands r0, r2
+ b _0812FD4A
+ .align 2, 0
+_0812FD28: .4byte 0xffff8000
+_0812FD2C: .4byte gBattleAnimArgs
+_0812FD30: .4byte gTasks
+_0812FD34: .4byte 0x00007fff
+_0812FD38:
+ ldr r3, _0812FD70 @ =gTasks
+ lsls r4, r6, 2
+ adds r1, r4, r6
+ lsls r1, 3
+ adds r1, r3
+ ldrh r2, [r5, 0x4]
+ ldr r7, _0812FD74 @ =0xffff8000
+ adds r0, r7, 0
+ orrs r0, r2
+_0812FD4A:
+ strh r0, [r1, 0xE]
+_0812FD4C:
+ 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, _0812FD78 @ =sub_812FAF8
+ str r1, [r0]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812FD70: .4byte gTasks
+_0812FD74: .4byte 0xffff8000
+_0812FD78: .4byte sub_812FAF8
+ thumb_func_end sub_812FC68
+
+ thumb_func_start sub_812FD7C
+sub_812FD7C: @ 812FD7C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _0812FDB4 @ =gTasks
+ adds r5, r0, r1
+ ldr r4, _0812FDB8 @ =gBattleAnimArgs
+ movs r1, 0x2
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0812FD9C
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_0812FD9C:
+ 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 _0812FDC0
+ ldr r0, _0812FDBC @ =gBattleAnimPlayerMonIndex
+ b _0812FDC2
+ .align 2, 0
+_0812FDB4: .4byte gTasks
+_0812FDB8: .4byte gBattleAnimArgs
+_0812FDBC: .4byte gBattleAnimPlayerMonIndex
+_0812FDC0:
+ ldr r0, _0812FE10 @ =gBattleAnimEnemyMonIndex
+_0812FDC2:
+ ldrb r4, [r0]
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x10]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x12]
+ adds r0, r4, 0
+ bl sub_8079E90
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x14]
+ ldr r0, _0812FE14 @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl obj_id_for_side_relative_to_move
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r5, 0x26]
+ ldr r2, _0812FE18 @ =gUnknown_084028AC
+ adds r0, r5, 0
+ bl sub_80798F4
+ ldr r0, _0812FE1C @ =sub_812FE20
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812FE10: .4byte gBattleAnimEnemyMonIndex
+_0812FE14: .4byte gBattleAnimArgs
+_0812FE18: .4byte gUnknown_084028AC
+_0812FE1C: .4byte sub_812FE20
+ thumb_func_end sub_812FD7C
+
+ thumb_func_start sub_812FE20
+sub_812FE20: @ 812FE20
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0812FE40 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _0812FE44
+ cmp r0, 0x1
+ beq _0812FEA4
+ b _0812FEB2
+ .align 2, 0
+_0812FE40: .4byte gTasks
+_0812FE44:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _0812FE5A
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl sub_812FEB8
+_0812FE5A:
+ movs r1, 0xA
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x12
+ bne _0812FE6A
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_812FEB8
+_0812FE6A:
+ adds r0, r4, 0
+ bl sub_807992C
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ bne _0812FEB2
+ ldrh r0, [r4, 0xE]
+ subs r0, 0x1
+ strh r0, [r4, 0xE]
+ lsls r0, 16
+ cmp r0, 0
+ bne _0812FE8C
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0812FEB2
+_0812FE8C:
+ strh r1, [r4, 0xA]
+ ldrh r1, [r4, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _0812FEA0 @ =gUnknown_084028AC
+ adds r0, r4, 0
+ bl sub_80798F4
+ b _0812FEB2
+ .align 2, 0
+_0812FEA0: .4byte gUnknown_084028AC
+_0812FEA4:
+ movs r1, 0xC
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0812FEB2
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_0812FEB2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_812FE20
+
+ thumb_func_start sub_812FEB8
+sub_812FEB8: @ 812FEB8
+ 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, _0812FEDC @ =gTasks
+ adds r4, r0, r2
+ cmp r1, 0
+ bne _0812FEE0
+ movs r1, 0x12
+ movs r3, 0xEC
+ b _0812FEE4
+ .align 2, 0
+_0812FEDC: .4byte gTasks
+_0812FEE0:
+ movs r1, 0x1E
+ movs r3, 0x14
+_0812FEE4:
+ 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, _0812FF88 @ =gSprites
+_0812FF1C:
+ 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, _0812FF8C @ =gSpriteTemplate_84028CC
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _0812FF70
+ 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 _0812FF5E
+ movs r2, 0x2
+ negs r2, r2
+ adds r0, r2, 0
+_0812FF5E:
+ strh r0, [r1, 0x30]
+ ldr r0, _0812FF90 @ =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]
+_0812FF70:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3
+ bls _0812FF1C
+ add sp, 0xC
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812FF88: .4byte gSprites
+_0812FF8C: .4byte gSpriteTemplate_84028CC
+_0812FF90: .4byte 0x0000ffff
+ thumb_func_end sub_812FEB8
+
+ thumb_func_start sub_812FF94
+sub_812FF94: @ 812FF94
+ 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 _0812FFDA
+ ldr r3, _0812FFE0 @ =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
+_0812FFDA:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812FFE0: .4byte gTasks
+ thumb_func_end sub_812FF94
+
+ thumb_func_start sub_812FFE4
+sub_812FFE4: @ 812FFE4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, _0813002C @ =gTasks
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ adds r4, r1
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldr r1, _08130030 @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r4, 0xA]
+ ldrb r0, [r1]
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08130034 @ =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, _08130038 @ =sub_813003C
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0813002C: .4byte gTasks
+_08130030: .4byte gBattleAnimArgs
+_08130034: .4byte gSprites
+_08130038: .4byte sub_813003C
+ thumb_func_end sub_812FFE4
+
+ thumb_func_start sub_813003C
+sub_813003C: @ 813003C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r1, _08130084 @ =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 _0813008C
+ ldrh r0, [r4, 0xC]
+ ldr r2, _08130088 @ =gUnknown_084028E4
+ 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 _0813007C
+ movs r0, 0
+ strh r0, [r4, 0x8]
+_0813007C:
+ ldrh r0, [r4, 0xA]
+ subs r0, 0x1
+ strh r0, [r4, 0xA]
+ b _0813009E
+ .align 2, 0
+_08130084: .4byte gTasks
+_08130088: .4byte gUnknown_084028E4
+_0813008C:
+ ldrh r0, [r4, 0xC]
+ movs r1, 0x10
+ movs r2, 0
+ movs r3, 0
+ bl BlendPalette
+ adds r0, r5, 0
+ bl DestroyAnimVisualTask
+_0813009E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_813003C
+
+ thumb_func_start sub_81300A4
+sub_81300A4: @ 81300A4
+ push {lr}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ movs r2, 0xD0
+ lsls r2, 1
+ ldr r1, _081300E0 @ =gBattleAnimPlayerMonIndex
+ ldrb r3, [r1]
+ ldr r1, _081300E4 @ =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, _081300E8 @ =gUnknown_08D2E014
+ str r1, [sp, 0x10]
+ ldr r1, _081300EC @ =gUnknown_08D2E170
+ str r1, [sp, 0x14]
+ ldr r1, _081300F0 @ =gUnknown_08D2E150
+ str r1, [sp, 0x18]
+ movs r1, 0
+ bl sub_80E3C4C
+ add sp, 0x1C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081300E0: .4byte gBattleAnimPlayerMonIndex
+_081300E4: .4byte gBattleAnimArgs
+_081300E8: .4byte gUnknown_08D2E014
+_081300EC: .4byte gUnknown_08D2E170
+_081300F0: .4byte gUnknown_08D2E150
+ thumb_func_end sub_81300A4
+
+ thumb_func_start sub_81300F4
+sub_81300F4: @ 81300F4
+ push {r4-r6,lr}
+ adds r5, r0, 0
+ ldr r6, _0813014C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r6]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08130110
+ ldr r1, _08130150 @ =gBattleAnimArgs
+ ldrh r0, [r1]
+ negs r0, r0
+ strh r0, [r1]
+_08130110:
+ ldrb r0, [r6]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ ldr r4, _08130150 @ =gBattleAnimArgs
+ lsrs r0, 24
+ ldrh r1, [r4]
+ adds r0, r1
+ strh r0, [r5, 0x20]
+ ldrb r0, [r6]
+ movs r1, 0x1
+ bl sub_8077ABC
+ 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 _08130158
+ movs r0, 0xA0
+ lsls r0, 2
+ strh r0, [r5, 0x2E]
+ ldr r0, _08130154 @ =0x0000fd80
+ strh r0, [r5, 0x30]
+ b _08130180
+ .align 2, 0
+_0813014C: .4byte gBattleAnimPlayerMonIndex
+_08130150: .4byte gBattleAnimArgs
+_08130154: .4byte 0x0000fd80
+_08130158:
+ cmp r0, 0x1
+ bne _08130172
+ 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 _08130180
+_08130172:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ movs r0, 0xA0
+ lsls r0, 2
+ strh r0, [r5, 0x2E]
+_08130180:
+ ldr r0, _081301AC @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _081301A0
+ 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]
+_081301A0:
+ ldr r0, _081301B0 @ =sub_81301B4
+ str r0, [r5, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081301AC: .4byte gBattleAnimPlayerMonIndex
+_081301B0: .4byte sub_81301B4
+ thumb_func_end sub_81300F4
+
+ thumb_func_start sub_81301B4
+sub_81301B4: @ 81301B4
+ 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 _081301E8
+ adds r0, r2, 0
+ bl move_anim_8072740
+_081301E8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81301B4
+
+ thumb_func_start sub_81301EC
+sub_81301EC: @ 81301EC
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _08130218 @ =gTasks
+ adds r6, r1, r0
+ bl IsContest
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0
+ beq _0813021C
+ movs r0, 0x8
+ strh r0, [r6, 0x12]
+ movs r0, 0x3
+ strh r0, [r6, 0x14]
+ movs r0, 0x1
+ strh r0, [r6, 0x16]
+ b _08130226
+ .align 2, 0
+_08130218: .4byte gTasks
+_0813021C:
+ movs r0, 0xC
+ strh r0, [r6, 0x12]
+ movs r0, 0x3
+ strh r0, [r6, 0x14]
+ strh r1, [r6, 0x16]
+_08130226:
+ ldr r5, _0813025C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r5]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08130260
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8077ABC
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_807A100
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _08130254
+ adds r0, 0x3
+_08130254:
+ asrs r0, 2
+ adds r0, r4, r0
+ b _08130284
+ .align 2, 0
+_0813025C: .4byte gBattleAnimPlayerMonIndex
+_08130260:
+ ldrb r0, [r5]
+ movs r1, 0x2
+ bl sub_8077ABC
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_807A100
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _08130280
+ adds r0, 0x3
+_08130280:
+ asrs r0, 2
+ subs r0, r4, r0
+_08130284:
+ strh r0, [r6, 0x1E]
+ ldr r5, _081302D8 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r5]
+ movs r1, 0x3
+ bl sub_8077ABC
+ adds r4, r0, 0
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_807A100
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _081302A8
+ adds r0, 0x3
+_081302A8:
+ asrs r0, 2
+ subs r0, r4, r0
+ strh r0, [r6, 0x20]
+ ldr r4, _081302DC @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x22]
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x24]
+ ldr r0, _081302E0 @ =sub_81302E4
+ str r0, [r6]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081302D8: .4byte gBattleAnimPlayerMonIndex
+_081302DC: .4byte gBattleAnimEnemyMonIndex
+_081302E0: .4byte sub_81302E4
+ thumb_func_end sub_81301EC
+
+ thumb_func_start sub_81302E4
+sub_81302E4: @ 81302E4
+ 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, _0813030C @ =gTasks
+ adds r5, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r5, r0]
+ cmp r1, 0
+ beq _08130310
+ cmp r1, 0x1
+ bne _08130308
+ b _08130408
+_08130308:
+ b _08130416
+ .align 2, 0
+_0813030C: .4byte gTasks
+_08130310:
+ ldrh r0, [r5, 0xA]
+ adds r0, 0x1
+ strh r0, [r5, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3
+ ble _08130416
+ 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_8130424
+ movs r6, 0
+ mov r8, r4
+ ldr r4, _08130384 @ =gSprites
+_0813034A:
+ add r0, sp, 0x10
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ mov r3, r8
+ movs r0, 0
+ ldrsh r2, [r3, r0]
+ ldr r0, _08130388 @ =gSpriteTemplate_840294C
+ movs r3, 0x23
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x40
+ beq _081303DE
+ movs r1, 0x16
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0813039E
+ cmp r6, 0
+ bne _0813038C
+ 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 _081303C6
+ .align 2, 0
+_08130384: .4byte gSprites
+_08130388: .4byte gSpriteTemplate_840294C
+_0813038C:
+ 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 _081303C6
+_0813039E:
+ cmp r6, 0
+ bne _081303B4
+ 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 _081303C4
+_081303B4:
+ 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
+_081303C4:
+ strh r0, [r1, 0x26]
+_081303C6:
+ ldr r1, _08130404 @ =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]
+_081303DE:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x1
+ bls _0813034A
+ ldrh r2, [r5, 0xC]
+ movs r3, 0xC
+ ldrsh r1, [r5, r3]
+ movs r4, 0x12
+ ldrsh r0, [r5, r4]
+ cmp r1, r0
+ bne _081303FC
+ ldrh r0, [r5, 0x8]
+ adds r0, 0x1
+ strh r0, [r5, 0x8]
+_081303FC:
+ adds r0, r2, 0x1
+ strh r0, [r5, 0xC]
+ b _08130416
+ .align 2, 0
+_08130404: .4byte gSprites
+_08130408:
+ movs r1, 0x1C
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _08130416
+ adds r0, r7, 0
+ bl DestroyAnimVisualTask
+_08130416:
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81302E4
+
+ thumb_func_start sub_8130424
+sub_8130424: @ 8130424
+ 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 _0813046C
+ mov r2, r9
+ strh r0, [r2]
+ mov r6, r10
+ strh r1, [r6]
+ b _081304CA
+_0813046C:
+ cmp r5, r6
+ bcc _0813047A
+ mov r0, r9
+ strh r2, [r0]
+ mov r1, r10
+ strh r3, [r1]
+ b _081304CA
+_0813047A:
+ 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]
+_081304CA:
+ 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_8130424
+
+ thumb_func_start sub_81304DC
+sub_81304DC: @ 81304DC
+ 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 _08130512
+ ldr r3, _08130518 @ =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
+_08130512:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08130518: .4byte gTasks
+ thumb_func_end sub_81304DC
+
+ thumb_func_start sub_813051C
+sub_813051C: @ 813051C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _08130548 @ =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, _0813054C @ =move_anim_8072740
+ adds r0, r4, 0
+ bl oamt_set_x3A_32
+ ldr r0, _08130550 @ =sub_8078CC0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08130548: .4byte gBattleAnimArgs
+_0813054C: .4byte move_anim_8072740
+_08130550: .4byte sub_8078CC0
+ thumb_func_end sub_813051C
+
+ thumb_func_start sub_8130554
+sub_8130554: @ 8130554
+ 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, _08130674 @ =gTasks
+ adds r7, r0, r1
+ ldr r0, _08130678 @ =gBattleAnimPlayerMonIndex
+ mov r10, r0
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x1E]
+ mov r1, r10
+ ldrb r0, [r1]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x20]
+ ldr r0, _0813067C @ =gBattleAnimEnemyMonIndex
+ mov r8, r0
+ ldrb r0, [r0]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r7, 0x22]
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0x3
+ bl sub_8077ABC
+ adds r4, r0, 0
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, 0
+ bl sub_807A100
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _081305C6
+ adds r0, 0x3
+_081305C6:
+ asrs r0, 2
+ adds r0, r4, r0
+ strh r0, [r7, 0x24]
+ ldr r4, _08130680 @ =gSpriteTemplate_84029AC
+ movs r0, 0x1E
+ ldrsh r5, [r7, r0]
+ movs r1, 0x20
+ ldrsh r6, [r7, r1]
+ mov r1, r8
+ ldrb r0, [r1]
+ bl sub_8079E90
+ 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 _08130690
+ ldr r4, _08130684 @ =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, _08130688 @ =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_80786EC
+ mov r1, r10
+ ldrb r0, [r1]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0813066E
+ 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
+_0813066E:
+ ldr r0, _0813068C @ =sub_81306A4
+ str r0, [r7]
+ b _08130696
+ .align 2, 0
+_08130674: .4byte gTasks
+_08130678: .4byte gBattleAnimPlayerMonIndex
+_0813067C: .4byte gBattleAnimEnemyMonIndex
+_08130680: .4byte gSpriteTemplate_84029AC
+_08130684: .4byte gSprites
+_08130688: .4byte 0x0000ffe0
+_0813068C: .4byte sub_81306A4
+_08130690:
+ mov r0, r9
+ bl DestroyAnimVisualTask
+_08130696:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8130554
+
+ thumb_func_start sub_81306A4
+sub_81306A4: @ 81306A4
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _081306C8 @ =gTasks
+ adds r4, r0, r1
+ movs r0, 0x8
+ ldrsh r1, [r4, r0]
+ cmp r1, 0x1
+ beq _0813070C
+ cmp r1, 0x1
+ bgt _081306CC
+ cmp r1, 0
+ beq _081306D6
+ b _081307AA
+ .align 2, 0
+_081306C8: .4byte gTasks
+_081306CC:
+ cmp r1, 0x2
+ beq _08130730
+ cmp r1, 0x3
+ beq _081307A4
+ b _081307AA
+_081306D6:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _081307AA
+ strh r1, [r4, 0xA]
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _08130708 @ =gSprites
+ adds r0, r1
+ bl sub_8078718
+ ldrh r0, [r4, 0xC]
+ adds r0, 0x1
+ strh r0, [r4, 0xC]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7
+ ble _081307AA
+ b _08130796
+ .align 2, 0
+_08130708: .4byte gSprites
+_0813070C:
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0813072C @ =gSprites
+ adds r0, r1
+ bl sub_8078718
+ lsls r0, 24
+ cmp r0, 0
+ beq _081307AA
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ b _08130796
+ .align 2, 0
+_0813072C: .4byte gSprites
+_08130730:
+ ldrh r0, [r4, 0xA]
+ adds r0, 0x1
+ strh r0, [r4, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _081307AA
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r2, [r4, 0xC]
+ adds r2, 0x1
+ strh r2, [r4, 0xC]
+ ldr r5, _081307A0 @ =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 _081307AA
+ 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
+_08130796:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _081307AA
+ .align 2, 0
+_081307A0: .4byte gSprites
+_081307A4:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_081307AA:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81306A4
+
+ thumb_func_start sub_81307B0
+sub_81307B0: @ 81307B0
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ ldr r0, _081307C4 @ =gBattleAnimArgs
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ adds r6, r0, 0
+ cmp r1, 0
+ bne _081307CC
+ ldr r0, _081307C8 @ =gBattleAnimPlayerMonIndex
+ b _081307CE
+ .align 2, 0
+_081307C4: .4byte gBattleAnimArgs
+_081307C8: .4byte gBattleAnimPlayerMonIndex
+_081307CC:
+ ldr r0, _08130834 @ =gBattleAnimEnemyMonIndex
+_081307CE:
+ ldrb r5, [r0]
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x10
+ ldr r3, _08130838 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _0813083C @ =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 _081307FC
+ movs r3, 0x1
+ negs r3, r3
+ adds r1, r3, 0
+_081307FC:
+ strh r1, [r4, 0x3C]
+ adds r0, r5, 0
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r4, 0x22]
+ movs r1, 0x2
+ ldrsh r0, [r6, r1]
+ cmp r0, 0
+ bne _08130840
+ 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_807A100
+ subs r0, 0x8
+ b _0813084A
+ .align 2, 0
+_08130834: .4byte gBattleAnimEnemyMonIndex
+_08130838: .4byte 0x000003ff
+_0813083C: .4byte 0xfffffc00
+_08130840:
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl sub_807A100
+ adds r0, 0x8
+_0813084A:
+ strh r0, [r4, 0x20]
+ ldr r0, _08130858 @ =sub_813085C
+ str r0, [r4, 0x1C]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08130858: .4byte sub_813085C
+ thumb_func_end sub_81307B0
+
+ thumb_func_start sub_813085C
+sub_813085C: @ 813085C
+ push {lr}
+ adds r2, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r2, r0]
+ cmp r1, 0x1
+ beq _081308A4
+ cmp r1, 0x1
+ bgt _08130872
+ cmp r1, 0
+ beq _0813087C
+ b _08130914
+_08130872:
+ cmp r1, 0x2
+ beq _081308B4
+ cmp r1, 0x3
+ beq _081308DA
+ b _08130914
+_0813087C:
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _08130914
+ 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 _08130914
+ b _081308D2
+_081308A4:
+ ldrh r0, [r2, 0x30]
+ adds r0, 0x1
+ strh r0, [r2, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ bne _08130914
+ b _081308CE
+_081308B4:
+ 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 _08130914
+_081308CE:
+ movs r0, 0
+ strh r0, [r2, 0x30]
+_081308D2:
+ ldrh r0, [r2, 0x2E]
+ adds r0, 0x1
+ strh r0, [r2, 0x2E]
+ b _08130914
+_081308DA:
+ 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 _08130914
+ ldrh r0, [r2, 0x3A]
+ subs r0, 0x1
+ strh r0, [r2, 0x3A]
+ lsls r0, 16
+ cmp r0, 0
+ beq _0813090E
+ movs r0, 0
+ strh r0, [r2, 0x30]
+ ldrh r0, [r2, 0x2E]
+ subs r0, 0x1
+ strh r0, [r2, 0x2E]
+ b _08130914
+_0813090E:
+ adds r0, r2, 0
+ bl move_anim_8072740
+_08130914:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_813085C
+
+ thumb_func_start sub_8130918
+sub_8130918: @ 8130918
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldr r2, _08130930 @ =gBattleAnimArgs
+ movs r3, 0
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _08130934
+ adds r0, r1, 0
+ bl DestroyAnimVisualTask
+ b _0813095C
+ .align 2, 0
+_08130930: .4byte gBattleAnimArgs
+_08130934:
+ ldr r0, _08130964 @ =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 obj_id_for_side_relative_to_move
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r4, 0x26]
+ ldr r2, _08130968 @ =gUnknown_084029DC
+ adds r0, r4, 0
+ bl sub_80798F4
+ ldr r0, _0813096C @ =sub_8130970
+ str r0, [r4]
+_0813095C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08130964: .4byte gTasks
+_08130968: .4byte gUnknown_084029DC
+_0813096C: .4byte sub_8130970
+ thumb_func_end sub_8130918
+
+ thumb_func_start sub_8130970
+sub_8130970: @ 8130970
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _081309B0 @ =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 _081309CA
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r1, [r4, 0xC]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _081309B8
+ ldr r2, _081309B4 @ =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 _081309C8
+ .align 2, 0
+_081309B0: .4byte gTasks
+_081309B4: .4byte gSprites
+_081309B8:
+ ldr r2, _08130A10 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _08130A14 @ =0x0000fffe
+_081309C8:
+ strh r1, [r0, 0x24]
+_081309CA:
+ adds r0, r4, 0
+ bl sub_807992C
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _08130A26
+ ldr r2, _08130A10 @ =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 _08130A20
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _08130A18 @ =gTasks
+ adds r0, r1
+ ldrh r1, [r0, 0x26]
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r2, _08130A1C @ =gUnknown_084029DC
+ bl sub_80798F4
+ strh r5, [r4, 0xA]
+ strh r5, [r4, 0xC]
+ b _08130A26
+ .align 2, 0
+_08130A10: .4byte gSprites
+_08130A14: .4byte 0x0000fffe
+_08130A18: .4byte gTasks
+_08130A1C: .4byte gUnknown_084029DC
+_08130A20:
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_08130A26:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8130970
+
+ thumb_func_start sub_8130A2C
+sub_8130A2C: @ 8130A2C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r0, _08130A40 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _08130A48
+ ldr r4, _08130A44 @ =gBattleAnimPlayerMonIndex
+ b _08130A4A
+ .align 2, 0
+_08130A40: .4byte gBattleAnimArgs
+_08130A44: .4byte gBattleAnimPlayerMonIndex
+_08130A48:
+ ldr r4, _08130A88 @ =gBattleAnimEnemyMonIndex
+_08130A4A:
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_807A100
+ strh r0, [r5, 0x22]
+ movs r1, 0x22
+ ldrsh r0, [r5, r1]
+ cmp r0, 0x7
+ bgt _08130A6E
+ movs r0, 0x8
+ strh r0, [r5, 0x22]
+_08130A6E:
+ movs r2, 0
+ strh r2, [r5, 0x2E]
+ ldr r1, _08130A8C @ =gBattleAnimArgs
+ ldrh r0, [r1, 0x2]
+ strh r0, [r5, 0x30]
+ strh r2, [r5, 0x32]
+ ldrh r0, [r1, 0x4]
+ strh r0, [r5, 0x34]
+ ldr r0, _08130A90 @ =sub_8130A94
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08130A88: .4byte gBattleAnimEnemyMonIndex
+_08130A8C: .4byte gBattleAnimArgs
+_08130A90: .4byte sub_8130A94
+ thumb_func_end sub_8130A2C
+
+ thumb_func_start sub_8130A94
+sub_8130A94: @ 8130A94
+ 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 _08130AE8
+ 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 _08130AE8
+ ldrh r0, [r3, 0x34]
+ subs r0, 0x1
+ strh r0, [r3, 0x34]
+ lsls r0, 16
+ cmp r0, 0
+ bne _08130AE8
+ adds r0, r3, 0
+ bl move_anim_8072740
+_08130AE8:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8130A94
+
+ thumb_func_start sub_8130AEC
+sub_8130AEC: @ 8130AEC
+ push {lr}
+ adds r3, r0, 0
+ ldr r0, _08130B18 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _08130B1C
+ 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 _08130B22
+ .align 2, 0
+_08130B18: .4byte gBattleAnimArgs
+_08130B1C:
+ movs r0, 0x8C
+ strh r0, [r3, 0x20]
+ ldr r0, _08130B30 @ =0x0000ffff
+_08130B22:
+ strh r0, [r3, 0x3C]
+ movs r0, 0x38
+ strh r0, [r3, 0x22]
+ ldr r0, _08130B34 @ =sub_8130B38
+ str r0, [r3, 0x1C]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08130B30: .4byte 0x0000ffff
+_08130B34: .4byte sub_8130B38
+ thumb_func_end sub_8130AEC
+
+ thumb_func_start sub_8130B38
+sub_8130B38: @ 8130B38
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x8
+ bls _08130B46
+ b _08130D18
+_08130B46:
+ lsls r0, 2
+ ldr r1, _08130B50 @ =_08130B54
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08130B50: .4byte _08130B54
+ .align 2, 0
+_08130B54:
+ .4byte _08130B78
+ .4byte _08130BAA
+ .4byte _08130BBC
+ .4byte _08130BFC
+ .4byte _08130C0E
+ .4byte _08130C4C
+ .4byte _08130CB0
+ .4byte _08130CD0
+ .4byte _08130CF6
+_08130B78:
+ 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 _08130B9A
+ movs r0, 0x3C
+ ldrsh r1, [r4, r0]
+ lsls r1, 1
+ ldrh r0, [r4, 0x20]
+ subs r0, r1
+ strh r0, [r4, 0x20]
+_08130B9A:
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x9
+ beq _08130BA8
+ b _08130D18
+_08130BA8:
+ b _08130CEA
+_08130BAA:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ beq _08130BBA
+ b _08130D18
+_08130BBA:
+ b _08130CEA
+_08130BBC:
+ 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, _08130BF8 @ =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 _08130BF4
+ b _08130D18
+_08130BF4:
+ b _08130CEA
+ .align 2, 0
+_08130BF8: .4byte gSineTable
+_08130BFC:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ beq _08130C0C
+ b _08130D18
+_08130C0C:
+ b _08130CEA
+_08130C0E:
+ 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, _08130C48 @ =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 _08130D18
+ b _08130CEE
+ .align 2, 0
+_08130C48: .4byte gSineTable
+_08130C4C:
+ 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, _08130CA4 @ =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 _08130C98
+ ldrh r2, [r4, 0x4]
+ lsls r1, r2, 22
+ lsrs r1, 22
+ adds r1, 0x10
+ ldr r3, _08130CA8 @ =0x000003ff
+ adds r0, r3, 0
+ ands r1, r0
+ ldr r0, _08130CAC @ =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r4, 0x4]
+_08130C98:
+ movs r1, 0x30
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x12
+ bne _08130D18
+ b _08130CEA
+ .align 2, 0
+_08130CA4: .4byte gSineTable
+_08130CA8: .4byte 0x000003ff
+_08130CAC: .4byte 0xfffffc00
+_08130CB0:
+ 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 _08130D18
+ b _08130CEA
+_08130CD0:
+ 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 _08130D18
+_08130CEA:
+ movs r0, 0
+ strh r0, [r4, 0x30]
+_08130CEE:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _08130D18
+_08130CF6:
+ 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 _08130D18
+ adds r0, r4, 0
+ bl move_anim_8072740
+_08130D18:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8130B38
+
+ thumb_func_start sub_8130D20
+sub_8130D20: @ 8130D20
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _08130D7C @ =gTasks
+ adds r6, r1, r0
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r6, 0x26]
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _08130DA8
+ bl IsDoubleBattle
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x1
+ bne _08130D8C
+ ldr r5, _08130D80 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r5]
+ movs r1, 0
+ bl sub_8077ABC
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ ldrb r1, [r5]
+ movs r0, 0x2
+ eors r0, r1
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ ble _08130D84
+ strh r7, [r6, 0x24]
+ b _08130DAC
+ .align 2, 0
+_08130D7C: .4byte gTasks
+_08130D80: .4byte gBattleAnimPlayerMonIndex
+_08130D84:
+ ldr r0, _08130D88 @ =0x0000ffff
+ b _08130DAA
+ .align 2, 0
+_08130D88: .4byte 0x0000ffff
+_08130D8C:
+ ldr r0, _08130DA0 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08130DA8
+ ldr r0, _08130DA4 @ =0x0000ffff
+ b _08130DAA
+ .align 2, 0
+_08130DA0: .4byte gBattleAnimPlayerMonIndex
+_08130DA4: .4byte 0x0000ffff
+_08130DA8:
+ movs r0, 0x1
+_08130DAA:
+ strh r0, [r6, 0x24]
+_08130DAC:
+ ldr r0, _08130DB8 @ =sub_8130DBC
+ str r0, [r6]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08130DB8: .4byte sub_8130DBC
+ thumb_func_end sub_8130D20
+
+ thumb_func_start sub_8130DBC
+sub_8130DBC: @ 8130DBC
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r1, _08130DE0 @ =gTasks
+ adds r3, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x8
+ bls _08130DD6
+ b _08130F50
+_08130DD6:
+ lsls r0, 2
+ ldr r1, _08130DE4 @ =_08130DE8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08130DE0: .4byte gTasks
+_08130DE4: .4byte _08130DE8
+ .align 2, 0
+_08130DE8:
+ .4byte _08130E0C
+ .4byte _08130E1E
+ .4byte _08130E50
+ .4byte _08130E80
+ .4byte _08130EA6
+ .4byte _08130ED0
+ .4byte _08130EE0
+ .4byte _08130F00
+ .4byte _08130F38
+_08130E0C:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xD
+ beq _08130E1C
+ b _08130F50
+_08130E1C:
+ b _08130F28
+_08130E1E:
+ ldr r2, _08130E4C @ =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 _08130E4A
+ b _08130F50
+_08130E4A:
+ b _08130F28
+ .align 2, 0
+_08130E4C: .4byte gSprites
+_08130E50:
+ ldr r2, _08130E7C @ =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 _08130F50
+ b _08130F28
+ .align 2, 0
+_08130E7C: .4byte gSprites
+_08130E80:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ bne _08130F50
+ movs r0, 0
+ strh r0, [r3, 0xA]
+ ldrh r1, [r3, 0xC]
+ movs r2, 0xC
+ ldrsh r0, [r3, r2]
+ cmp r0, 0
+ bne _08130F2C
+ adds r0, r1, 0x1
+ strh r0, [r3, 0xC]
+ movs r0, 0x1
+ strh r0, [r3, 0x8]
+ b _08130F50
+_08130EA6:
+ ldr r2, _08130ECC @ =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 _08130F50
+ b _08130F28
+ .align 2, 0
+_08130ECC: .4byte gSprites
+_08130ED0:
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x6
+ bne _08130F50
+ b _08130F28
+_08130EE0:
+ ldr r2, _08130EFC @ =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 _08130F18
+ .align 2, 0
+_08130EFC: .4byte gSprites
+_08130F00:
+ ldr r2, _08130F34 @ =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
+_08130F18:
+ 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 _08130F50
+_08130F28:
+ movs r0, 0
+ strh r0, [r3, 0xA]
+_08130F2C:
+ ldrh r0, [r3, 0x8]
+ adds r0, 0x1
+ strh r0, [r3, 0x8]
+ b _08130F50
+ .align 2, 0
+_08130F34: .4byte gSprites
+_08130F38:
+ ldr r2, _08130F58 @ =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
+_08130F50:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08130F58: .4byte gSprites
+ thumb_func_end sub_8130DBC
+
+ thumb_func_start sub_8130F5C
+sub_8130F5C: @ 8130F5C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _08130F78 @ =gBattleAnimArgs
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _08130F80
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl sub_80787B0
+ ldr r0, _08130F7C @ =gBattleAnimPlayerMonIndex
+ b _08130F82
+ .align 2, 0
+_08130F78: .4byte gBattleAnimArgs
+_08130F7C: .4byte gBattleAnimPlayerMonIndex
+_08130F80:
+ ldr r0, _08130FD8 @ =gBattleAnimEnemyMonIndex
+_08130F82:
+ ldrb r0, [r0]
+ strh r0, [r4, 0x3C]
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08130FA6
+ ldrb r0, [r4, 0x3]
+ movs r1, 0x3F
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x10
+ orrs r1, r0
+ strb r1, [r4, 0x3]
+_08130FA6:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8079ED4
+ 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, _08130FDC @ =sub_8130FE0
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08130FD8: .4byte gBattleAnimEnemyMonIndex
+_08130FDC: .4byte sub_8130FE0
+ thumb_func_end sub_8130F5C
+
+ thumb_func_start sub_8130FE0
+sub_8130FE0: @ 8130FE0
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x38
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _08130FEE
+ b _081311DE
+_08130FEE:
+ lsls r0, 2
+ ldr r1, _08130FF8 @ =_08130FFC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08130FF8: .4byte _08130FFC
+ .align 2, 0
+_08130FFC:
+ .4byte _08131010
+ .4byte _08131110
+ .4byte _08131178
+ .4byte _0813118C
+ .4byte _081311D8
+_08131010:
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x5
+ bhi _08131040
+ lsls r0, 2
+ ldr r1, _08131024 @ =_08131028
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08131024: .4byte _08131028
+ .align 2, 0
+_08131028:
+ .4byte _08131044
+ .4byte _08131060
+ .4byte _08131082
+ .4byte _0813109E
+ .4byte _08131044
+ .4byte _081310C4
+_08131040:
+ movs r0, 0
+ strh r0, [r4, 0x3A]
+_08131044:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x5
+ bl sub_807A100
+ subs r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ b _081310B8
+_08131060:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x5
+ bl sub_807A100
+ 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_807A100
+ adds r0, 0x4
+ b _081310BE
+_08131082:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x4
+ bl sub_807A100
+ adds r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ b _081310B8
+_0813109E:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x4
+ bl sub_807A100
+ adds r0, 0x4
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+_081310B8:
+ bl sub_807A100
+ subs r0, 0x4
+_081310BE:
+ lsls r0, 16
+ lsrs r1, r0, 16
+ b _081310E4
+_081310C4:
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrh r0, [r4, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r1, r0, 24
+_081310E4:
+ movs r2, 0x3A
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x4
+ bne _081310F0
+ movs r0, 0x18
+ b _081310FA
+_081310F0:
+ cmp r0, 0x5
+ bne _081310F8
+ movs r0, 0x6
+ b _081310FA
+_081310F8:
+ movs r0, 0xC
+_081310FA:
+ 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 _081311CA
+_08131110:
+ adds r0, r4, 0
+ bl sub_8078B5C
+ lsls r0, 24
+ cmp r0, 0
+ beq _081311DE
+ movs r1, 0x3A
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ beq _08131148
+ cmp r0, 0x5
+ beq _08131168
+ 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 _08131160
+_08131148:
+ 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]
+_08131160:
+ ldrh r0, [r4, 0x3A]
+ adds r0, 0x1
+ strh r0, [r4, 0x3A]
+ b _081311DE
+_08131168:
+ 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 _081311DE
+_08131178:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x4
+ bne _081311DE
+ movs r0, 0
+ strh r0, [r4, 0x38]
+ b _081311DE
+_0813118C:
+ ldrh r1, [r4, 0x2E]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0813119E
+ ldrh r0, [r4, 0x30]
+ subs r0, 0x1
+ strh r0, [r4, 0x30]
+ b _081311A4
+_0813119E:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+_081311A4:
+ ldr r2, _081311D4 @ =REG_BLDALPHA
+ ldrh r0, [r4, 0x32]
+ lsls r0, 8
+ ldrh r1, [r4, 0x30]
+ orrs r0, r1
+ strh r0, [r2]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x20
+ bne _081311DE
+ adds r2, r4, 0
+ adds r2, 0x3E
+ ldrb r0, [r2]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r2]
+_081311CA:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ b _081311DE
+ .align 2, 0
+_081311D4: .4byte REG_BLDALPHA
+_081311D8:
+ adds r0, r4, 0
+ bl move_anim_8072740
+_081311DE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8130FE0
+
+ thumb_func_start sub_81311E4
+sub_81311E4: @ 81311E4
+ 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 _08131242
+ ldr r0, _08131260 @ =gSpriteTemplate_8402500
+ 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
+_08131242:
+ movs r0, 0x38
+ ldrsh r1, [r4, r0]
+ movs r2, 0x36
+ ldrsh r0, [r4, r2]
+ cmp r1, r0
+ bne _08131254
+ adds r0, r4, 0
+ bl move_anim_8072740
+_08131254:
+ ldrh r0, [r4, 0x38]
+ adds r0, 0x1
+ strh r0, [r4, 0x38]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08131260: .4byte gSpriteTemplate_8402500
+ thumb_func_end sub_81311E4
+
+ thumb_func_start sub_8131264
+sub_8131264: @ 8131264
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _081312A0 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ ldrb r0, [r4]
+ movs r1, 0x3
+ bl sub_8077ABC
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ beq _08131290
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _081312A8
+_08131290:
+ ldr r2, _081312A4 @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x20]
+ ldrh r0, [r2]
+ subs r0, r1, r0
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r2, 0x4]
+ subs r1, r0
+ b _081312B6
+ .align 2, 0
+_081312A0: .4byte gBattleAnimEnemyMonIndex
+_081312A4: .4byte gBattleAnimArgs
+_081312A8:
+ ldr r2, _081312DC @ =gBattleAnimArgs
+ ldrh r1, [r5, 0x20]
+ ldrh r0, [r2]
+ adds r0, r1, r0
+ strh r0, [r5, 0x2E]
+ ldrh r0, [r2, 0x4]
+ adds r1, r0
+_081312B6:
+ 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, _081312E0 @ =sub_81311E4
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081312DC: .4byte gBattleAnimArgs
+_081312E0: .4byte sub_81311E4
+ thumb_func_end sub_8131264
+
+ thumb_func_start sub_81312E4
+sub_81312E4: @ 81312E4
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r2, r5, 0
+ ldr r0, _08131328 @ =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 _0813132C
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8078E70
+ movs r0, 0x80
+ lsls r0, 1
+ strh r0, [r4, 0xA]
+ strh r0, [r4, 0xC]
+ b _08131378
+ .align 2, 0
+_08131328: .4byte gTasks
+_0813132C:
+ cmp r0, 0x1
+ bne _08131384
+ 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 _081313E8
+ movs r0, 0
+ strh r0, [r4, 0xE]
+ adds r0, r5, 0
+ bl sub_8078F40
+ ldr r1, _08131380 @ =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]
+_08131378:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _081313E8
+ .align 2, 0
+_08131380: .4byte gSprites
+_08131384:
+ ldr r4, _081313F4 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r4]
+ movs r1, 0
+ bl refresh_graphics_maybe
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _081313C6
+ ldr r3, _081313F8 @ =gSprites
+ ldr r2, _081313FC @ =gObjectBankIDs
+ ldrb r0, [r4]
+ adds r0, r2
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r3, 0
+ adds r1, 0x10
+ adds r0, r1
+ ldr r1, _08131400 @ =gSpriteAffineAnimTable_81E7C18
+ str r1, [r0]
+ ldrb r0, [r4]
+ adds r0, r2
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r3
+ movs r1, 0
+ bl StartSpriteAffineAnim
+_081313C6:
+ mov r4, r9
+ adds r3, r7, 0
+ ldr r5, _08131404 @ =sub_8131408
+ movs r1, 0xF
+ mov r2, r8
+ adds r0, r4, r2
+ adds r0, 0x26
+ movs r2, 0
+_081313D6:
+ strh r2, [r0]
+ subs r0, 0x2
+ subs r1, 0x1
+ cmp r1, 0
+ bge _081313D6
+ adds r0, r3, r6
+ lsls r0, 3
+ adds r0, r4
+ str r5, [r0]
+_081313E8:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081313F4: .4byte gBattleAnimPlayerMonIndex
+_081313F8: .4byte gSprites
+_081313FC: .4byte gObjectBankIDs
+_08131400: .4byte gSpriteAffineAnimTable_81E7C18
+_08131404: .4byte sub_8131408
+ thumb_func_end sub_81312E4
+
+ thumb_func_start sub_8131408
+sub_8131408: @ 8131408
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r1, _08131434 @ =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 _0813146C
+ cmp r5, 0x1
+ bgt _08131438
+ cmp r5, 0
+ beq _08131442
+ b _0813155A
+ .align 2, 0
+_08131434: .4byte gTasks
+_08131438:
+ cmp r5, 0x2
+ beq _081314D8
+ cmp r5, 0x3
+ beq _08131514
+ b _0813155A
+_08131442:
+ ldr r0, _08131464 @ =gSprites
+ lsls r1, r3, 4
+ adds r1, r3
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, _08131468 @ =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 _08131506
+ .align 2, 0
+_08131464: .4byte gSprites
+_08131468: .4byte 0x0000ff38
+_0813146C:
+ ldrh r1, [r4, 0x1C]
+ adds r1, 0x70
+ movs r5, 0
+ strh r1, [r4, 0x1C]
+ ldr r2, _081314D0 @ =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 _0813149C
+ strh r5, [r2, 0x24]
+_0813149C:
+ movs r1, 0x26
+ ldrsh r0, [r2, r1]
+ cmp r0, 0
+ ble _081314A6
+ strh r5, [r2, 0x26]
+_081314A6:
+ movs r3, 0x26
+ ldrsh r0, [r2, r3]
+ cmp r0, 0
+ bne _0813155A
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8076F98
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x7D
+ bl PlaySE12WithPanning
+ ldr r1, _081314D4 @ =0xfffff800
+ adds r0, r1, 0
+ ldrh r2, [r4, 0x1C]
+ adds r0, r2
+ strh r0, [r4, 0x1C]
+ b _08131506
+ .align 2, 0
+_081314D0: .4byte gSprites
+_081314D4: .4byte 0xfffff800
+_081314D8:
+ ldrh r0, [r4, 0x1C]
+ subs r0, 0x70
+ strh r0, [r4, 0x1C]
+ lsls r0, 16
+ cmp r0, 0
+ bge _081314E8
+ movs r0, 0
+ strh r0, [r4, 0x1C]
+_081314E8:
+ ldr r0, _08131510 @ =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 _0813155A
+_08131506:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _0813155A
+ .align 2, 0
+_08131510: .4byte gSprites
+_08131514:
+ ldrh r0, [r4, 0x1C]
+ adds r0, 0x70
+ strh r0, [r4, 0x1C]
+ ldr r2, _08131560 @ =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 _08131538
+ movs r0, 0
+ strh r0, [r1, 0x26]
+_08131538:
+ movs r3, 0x26
+ ldrsh r0, [r1, r3]
+ cmp r0, 0
+ bne _0813155A
+ movs r0, 0x40
+ negs r0, r0
+ bl sub_8076F98
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x7D
+ bl PlaySE12WithPanning
+ adds r0, r6, 0
+ bl DestroyAnimVisualTask
+_0813155A:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08131560: .4byte gSprites
+ thumb_func_end sub_8131408
+
+ thumb_func_start sub_8131564
+sub_8131564: @ 8131564
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _08131588 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08131590
+ ldrb r0, [r4]
+ bl sub_8079E90
+ subs r0, 0x2
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldr r4, _0813158C @ =0x0000ff70
+ b _081315A0
+ .align 2, 0
+_08131588: .4byte gBattleAnimEnemyMonIndex
+_0813158C: .4byte 0x0000ff70
+_08131590:
+ ldrb r0, [r4]
+ bl sub_8079E90
+ adds r0, 0x2
+ adds r1, r5, 0
+ adds r1, 0x43
+ strb r0, [r1]
+ ldr r4, _081315BC @ =0x0000ffa0
+_081315A0:
+ ldr r0, _081315C0 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ movs r1, 0x3
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x22]
+ strh r4, [r5, 0x26]
+ ldr r0, _081315C4 @ =sub_81315C8
+ str r0, [r5, 0x1C]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081315BC: .4byte 0x0000ffa0
+_081315C0: .4byte gBattleAnimEnemyMonIndex
+_081315C4: .4byte sub_81315C8
+ thumb_func_end sub_8131564
+
+ thumb_func_start sub_81315C8
+sub_81315C8: @ 81315C8
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x2E
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x4
+ bls _081315D6
+ b _081316F2
+_081315D6:
+ lsls r0, 2
+ ldr r1, _081315E0 @ =_081315E4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_081315E0: .4byte _081315E4
+ .align 2, 0
+_081315E4:
+ .4byte _081315F8
+ .4byte _0813161C
+ .4byte _0813165C
+ .4byte _0813168C
+ .4byte _081316B8
+_081315F8:
+ ldrh r0, [r4, 0x26]
+ adds r0, 0xA
+ strh r0, [r4, 0x26]
+ lsls r0, 16
+ cmp r0, 0
+ blt _081316F2
+ movs r0, 0x3F
+ bl sub_8076F98
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xCD
+ bl PlaySE12WithPanning
+ movs r0, 0
+ strh r0, [r4, 0x26]
+ b _081316B0
+_0813161C:
+ ldrh r1, [r4, 0x30]
+ adds r1, 0x4
+ movs r5, 0
+ strh r1, [r4, 0x30]
+ ldr r2, _08131658 @ =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 _081316F2
+ movs r0, 0x3F
+ bl sub_8076F98
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xCD
+ bl PlaySE12WithPanning
+ strh r5, [r4, 0x30]
+ strh r5, [r4, 0x26]
+ b _081316B0
+ .align 2, 0
+_08131658: .4byte gSineTable
+_0813165C:
+ ldrh r1, [r4, 0x30]
+ adds r1, 0x6
+ movs r3, 0
+ strh r1, [r4, 0x30]
+ ldr r2, _08131688 @ =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 _081316F2
+ strh r3, [r4, 0x30]
+ strh r3, [r4, 0x26]
+ b _081316B0
+ .align 2, 0
+_08131688: .4byte gSineTable
+_0813168C:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _081316F2
+ movs r0, 0x3F
+ bl sub_8076F98
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0xC0
+ bl PlaySE12WithPanning
+ movs r0, 0
+ strh r0, [r4, 0x30]
+_081316B0:
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _081316F2
+_081316B8:
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x8
+ ble _081316F2
+ 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 _081316F2
+ adds r0, r4, 0
+ bl move_anim_8072740
+_081316F2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81315C8
+
+ thumb_func_start sub_81316F8
+sub_81316F8: @ 81316F8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ mov r10, r4
+ bl IsContest
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _0813173E
+ movs r0, 0x1
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ lsls r0, 16
+ asrs r7, r0, 16
+ cmp r7, 0
+ blt _0813173E
+ movs r0, 0x1
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0
+ bge _0813174C
+ lsls r0, r7, 4
+ adds r0, r7
+ lsls r0, 2
+ ldr r1, _08131748 @ =gSprites
+ adds r0, r1
+ bl obj_delete_but_dont_free_vram
+_0813173E:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ b _081317EE
+ .align 2, 0
+_08131748: .4byte gSprites
+_0813174C:
+ ldr r1, _081317FC @ =gSprites
+ mov r9, r1
+ lsls r1, r0, 4
+ mov r8, r1
+ add r8, r0
+ mov r0, r8
+ lsls r0, 2
+ mov r8, r0
+ mov r4, r8
+ add r4, r9
+ ldrh r0, [r4, 0x24]
+ adds r0, 0x18
+ strh r0, [r4, 0x24]
+ lsls r6, r7, 4
+ adds r6, r7
+ lsls r6, 2
+ mov r1, r9
+ adds r2, r6, r1
+ ldrh r0, [r2, 0x24]
+ subs r0, 0x18
+ strh r0, [r2, 0x24]
+ strh r5, [r4, 0x2E]
+ strh r5, [r2, 0x2E]
+ strh r5, [r4, 0x30]
+ strh r5, [r2, 0x30]
+ strh r5, [r4, 0x32]
+ strh r5, [r2, 0x32]
+ movs r0, 0x10
+ strh r0, [r4, 0x34]
+ ldr r0, _08131800 @ =0x0000fff0
+ strh r0, [r2, 0x34]
+ strh r5, [r4, 0x36]
+ movs r0, 0x80
+ strh r0, [r2, 0x36]
+ movs r0, 0x18
+ strh r0, [r4, 0x38]
+ strh r0, [r2, 0x38]
+ mov r0, r10
+ strh r0, [r4, 0x3A]
+ strh r0, [r2, 0x3A]
+ strh r5, [r4, 0x3C]
+ strh r5, [r2, 0x3C]
+ ldr r0, _08131804 @ =gTasks
+ mov r1, r10
+ lsls r3, r1, 2
+ add r3, r10
+ lsls r3, 3
+ adds r3, r0
+ movs r0, 0x2
+ strh r0, [r3, 0x8]
+ adds r5, r4, 0
+ adds r5, 0x3E
+ ldrb r1, [r5]
+ subs r0, 0x7
+ ands r0, r1
+ strb r0, [r5]
+ adds r5, r2, 0
+ adds r5, 0x3E
+ ldrb r0, [r5]
+ movs r1, 0x4
+ orrs r0, r1
+ strb r0, [r5]
+ ldrb r5, [r4, 0x1]
+ movs r1, 0xD
+ negs r1, r1
+ adds r0, r1, 0
+ ands r0, r5
+ strb r0, [r4, 0x1]
+ ldrb r0, [r2, 0x1]
+ ands r1, r0
+ strb r1, [r2, 0x1]
+ movs r0, 0x1C
+ add r9, r0
+ add r8, r9
+ ldr r0, _08131808 @ =sub_8131838
+ mov r1, r8
+ str r0, [r1]
+ add r6, r9
+ str r0, [r6]
+ ldr r0, _0813180C @ =sub_8131810
+ str r0, [r3]
+_081317EE:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081317FC: .4byte gSprites
+_08131800: .4byte 0x0000fff0
+_08131804: .4byte gTasks
+_08131808: .4byte sub_8131838
+_0813180C: .4byte sub_8131810
+ thumb_func_end sub_81316F8
+
+ thumb_func_start sub_8131810
+sub_8131810: @ 8131810
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r1, _08131834 @ =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 _0813182E
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_0813182E:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08131834: .4byte gTasks
+ thumb_func_end sub_8131810
+
+ thumb_func_start sub_8131838
+sub_8131838: @ 8131838
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x30]
+ adds r0, 0x1
+ movs r5, 0
+ strh r0, [r4, 0x30]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _08131868
+ strh r5, [r4, 0x30]
+ adds r3, r4, 0
+ adds r3, 0x3E
+ ldrb r2, [r3]
+ lsls r0, r2, 29
+ lsrs r0, 31
+ movs r1, 0x1
+ eors r1, r0
+ lsls r1, 2
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_08131868:
+ ldrh r0, [r4, 0x34]
+ ldrh r1, [r4, 0x36]
+ adds r0, r1
+ 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 _08131890
+ cmp r0, 0x1
+ beq _081318A8
+ b _081318E6
+_08131890:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3C
+ bne _081318E6
+ strh r5, [r4, 0x32]
+ ldrh r0, [r4, 0x2E]
+ adds r0, 0x1
+ strh r0, [r4, 0x2E]
+ b _081318E6
+_081318A8:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ lsls r0, 16
+ cmp r0, 0
+ ble _081318E6
+ strh r5, [r4, 0x32]
+ ldrh r0, [r4, 0x38]
+ subs r0, 0x2
+ strh r0, [r4, 0x38]
+ lsls r0, 16
+ cmp r0, 0
+ bge _081318E6
+ ldr r3, _081318EC @ =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
+_081318E6:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081318EC: .4byte gTasks
+ thumb_func_end sub_8131838
+
+ thumb_func_start sub_81318F0
+sub_81318F0: @ 81318F0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r3, _0813193C @ =gBattleAnimArgs
+ movs r2, 0
+ strh r2, [r3, 0xE]
+ ldr r1, _08131940 @ =gHappinessMoveAnim
+ 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 _08131914
+ movs r0, 0x1
+ strh r0, [r3, 0xE]
+_08131914:
+ adds r0, r2, 0
+ subs r0, 0x5C
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x6C
+ bhi _08131924
+ movs r0, 0x2
+ strh r0, [r3, 0xE]
+_08131924:
+ lsls r0, r1, 24
+ lsrs r0, 24
+ cmp r0, 0xC8
+ bls _08131930
+ movs r0, 0x3
+ strh r0, [r3, 0xE]
+_08131930:
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0813193C: .4byte gBattleAnimArgs
+_08131940: .4byte gHappinessMoveAnim
+ thumb_func_end sub_81318F0
+
+ thumb_func_start sub_8131944
+sub_8131944: @ 8131944
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x14
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldr r1, _08131974 @ =gTasks
+ lsls r0, 2
+ add r0, r8
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r0, r1]
+ cmp r0, 0x4
+ bls _0813196A
+ b _08131EA0
+_0813196A:
+ lsls r0, 2
+ ldr r1, _08131978 @ =_0813197C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08131974: .4byte gTasks
+_08131978: .4byte _0813197C
+ .align 2, 0
+_0813197C:
+ .4byte _08131990
+ .4byte _08131A44
+ .4byte _08131C20
+ .4byte _08131D40
+ .4byte _08131DC4
+_08131990:
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _081319DC @ =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, _081319E0 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _081319E8
+ ldr r2, _081319E4 @ =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 _08131A02
+ .align 2, 0
+_081319DC: .4byte gTasks
+_081319E0: .4byte gBattleAnimPlayerMonIndex
+_081319E4: .4byte gSprites
+_081319E8:
+ ldr r3, _08131A3C @ =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
+_08131A02:
+ ldr r1, _08131A40 @ =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 _08131A2E
+ b _08131EA0
+_08131A2E:
+ movs r0, 0
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _08131EA0
+ .align 2, 0
+_08131A3C: .4byte gSprites
+_08131A40: .4byte gTasks
+_08131A44:
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ beq _08131A74
+ ldr r0, _08131A6C @ =0x02019348
+ ldr r2, [r0, 0x8]
+ mov r10, r2
+ ldr r3, [r0, 0xC]
+ mov r9, r3
+ ldrh r5, [r0]
+ ldr r0, _08131A70 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl sub_8079E90
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r7, 0
+ b _08131B92
+ .align 2, 0
+_08131A6C: .4byte 0x02019348
+_08131A70: .4byte gBattleAnimPlayerMonIndex
+_08131A74:
+ ldr r4, _08131AD4 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08131B10
+ ldr r7, _08131AD8 @ =gBattlePartyID
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _08131ADC @ =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
+ ldrb r2, [r4]
+ lsls r1, r2, 2
+ ldr r0, _08131AE0 @ =0x02017800
+ adds r1, r0
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _08131AE4
+ 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 _08131AE6
+ .align 2, 0
+_08131AD4: .4byte gBattleAnimPlayerMonIndex
+_08131AD8: .4byte gBattlePartyID
+_08131ADC: .4byte gPlayerParty
+_08131AE0: .4byte 0x02017800
+_08131AE4:
+ ldrh r5, [r1, 0x2]
+_08131AE6:
+ movs r0, 0x1
+ bl obj_id_for_side_relative_to_move
+ ldr r2, _08131B0C @ =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 _08131B94
+ .align 2, 0
+_08131B0C: .4byte gSprites
+_08131B10:
+ ldr r7, _08131B64 @ =gBattlePartyID
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r0, r7
+ ldrh r0, [r0]
+ movs r6, 0x64
+ muls r0, r6
+ ldr r5, _08131B68 @ =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
+ ldrb r2, [r4]
+ lsls r1, r2, 2
+ ldr r0, _08131B6C @ =0x02017800
+ adds r1, r0
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0
+ bne _08131B70
+ 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 _08131B72
+ .align 2, 0
+_08131B64: .4byte gBattlePartyID
+_08131B68: .4byte gEnemyParty
+_08131B6C: .4byte 0x02017800
+_08131B70:
+ ldrh r5, [r1, 0x2]
+_08131B72:
+ movs r0, 0x1
+ bl obj_id_for_side_relative_to_move
+ ldr r2, _08131C04 @ =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
+_08131B92:
+ ldr r6, _08131C08 @ =0x0000ffe0
+_08131B94:
+ ldr r0, _08131C0C @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r3, r6, 16
+ asrs r3, 16
+ str r0, [sp]
+ str r4, [sp, 0x4]
+ mov r4, r10
+ str r4, [sp, 0x8]
+ mov r0, r9
+ str r0, [sp, 0xC]
+ adds r0, r5, 0
+ adds r1, r7, 0
+ movs r2, 0
+ bl sub_8079F44
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldr r0, _08131C10 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ lsls r0, 2
+ ldr r1, _08131C14 @ =0x02017800
+ adds r0, r1
+ ldrh r0, [r0, 0x2]
+ cmp r0, 0
+ beq _08131BF2
+ ldr r1, _08131C04 @ =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, _08131C18 @ =0x00007fff
+ movs r1, 0x10
+ movs r2, 0x6
+ bl BlendPalette
+_08131BF2:
+ ldr r0, _08131C1C @ =gTasks
+ mov r3, r8
+ lsls r1, r3, 2
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ strh r5, [r1, 0x26]
+ b _08131DB6
+ .align 2, 0
+_08131C04: .4byte gSprites
+_08131C08: .4byte 0x0000ffe0
+_08131C0C: .4byte gBattleAnimEnemyMonIndex
+_08131C10: .4byte gBattleAnimPlayerMonIndex
+_08131C14: .4byte 0x02017800
+_08131C18: .4byte 0x00007fff
+_08131C1C: .4byte gTasks
+_08131C20:
+ ldr r1, _08131C6C @ =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, _08131C70 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _08131C78
+ ldr r3, _08131C74 @ =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 _08131C8E
+ .align 2, 0
+_08131C6C: .4byte gTasks
+_08131C70: .4byte gBattleAnimPlayerMonIndex
+_08131C74: .4byte gSprites
+_08131C78:
+ ldr r2, _08131CDC @ =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]
+_08131C8E:
+ ldr r1, _08131CE0 @ =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 _08131D0E
+ ldr r0, _08131CE4 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08131CEC
+ lsls r4, r5, 16
+ asrs r4, 16
+ ldr r0, _08131CE8 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ bge _08131D0E
+ b _08131D02
+ .align 2, 0
+_08131CDC: .4byte gSprites
+_08131CE0: .4byte gTasks
+_08131CE4: .4byte gBattleAnimPlayerMonIndex
+_08131CE8: .4byte gBattleAnimEnemyMonIndex
+_08131CEC:
+ lsls r4, r5, 16
+ asrs r4, 16
+ ldr r0, _08131D30 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, r0
+ ble _08131D0E
+_08131D02:
+ ldrh r0, [r6, 0x24]
+ adds r0, 0x1
+ strh r0, [r6, 0x24]
+ ldr r1, _08131D34 @ =gBattleAnimArgs
+ ldr r0, _08131D38 @ =0x0000ffff
+ strh r0, [r1, 0xE]
+_08131D0E:
+ lsls r0, r5, 16
+ movs r2, 0x80
+ lsls r2, 14
+ adds r0, r2
+ movs r1, 0x98
+ lsls r1, 17
+ cmp r0, r1
+ bhi _08131D20
+ b _08131EA0
+_08131D20:
+ ldr r0, _08131D3C @ =gTasks
+ mov r1, r9
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+ movs r0, 0
+ strh r0, [r1, 0xA]
+ b _08131DB6
+ .align 2, 0
+_08131D30: .4byte gBattleAnimEnemyMonIndex
+_08131D34: .4byte gBattleAnimArgs
+_08131D38: .4byte 0x0000ffff
+_08131D3C: .4byte gTasks
+_08131D40:
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _08131D8C @ =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, _08131D90 @ =gSprites
+ adds r0, r5
+ bl sub_807A0F4
+ ldr r0, _08131D94 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ mov r9, r4
+ cmp r0, 0
+ bne _08131D98
+ 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 _08131DAC
+ .align 2, 0
+_08131D8C: .4byte gTasks
+_08131D90: .4byte gSprites
+_08131D94: .4byte gBattleAnimPlayerMonIndex
+_08131D98:
+ 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]
+_08131DAC:
+ ldr r0, _08131DC0 @ =gTasks
+ mov r1, r9
+ add r1, r8
+ lsls r1, 3
+ adds r1, r0
+_08131DB6:
+ ldrh r0, [r1, 0x8]
+ adds r0, 0x1
+ strh r0, [r1, 0x8]
+ b _08131EA0
+ .align 2, 0
+_08131DC0: .4byte gTasks
+_08131DC4:
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldr r1, _08131E38 @ =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, _08131E3C @ =gBattleAnimPlayerMonIndex
+ mov r10, r0
+ ldrb r0, [r0]
+ str r2, [sp, 0x10]
+ bl GetBankSide
+ lsls r0, 24
+ mov r9, r4
+ ldr r2, [sp, 0x10]
+ cmp r0, 0
+ bne _08131E44
+ ldr r1, _08131E40 @ =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_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r5, 0
+ cmp r4, r0
+ blt _08131E7C
+ movs r2, 0
+ strh r2, [r6, 0x24]
+ b _08131E7C
+ .align 2, 0
+_08131E38: .4byte gTasks
+_08131E3C: .4byte gBattleAnimPlayerMonIndex
+_08131E40: .4byte gSprites
+_08131E44:
+ ldr r1, _08131EB0 @ =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_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r3, r5, 0
+ cmp r4, r0
+ bgt _08131E7C
+ movs r4, 0
+ strh r4, [r6, 0x24]
+_08131E7C:
+ ldr r1, _08131EB4 @ =gTasks
+ mov r0, r9
+ add r0, r8
+ lsls r0, 3
+ adds r0, r1
+ ldrb r1, [r0, 0xA]
+ strh r1, [r0, 0xA]
+ ldr r1, _08131EB0 @ =gSprites
+ adds r0, r3, r7
+ lsls r0, 2
+ adds r0, r1
+ movs r1, 0x24
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ bne _08131EA0
+ mov r0, r8
+ bl DestroyAnimVisualTask
+_08131EA0:
+ add sp, 0x14
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08131EB0: .4byte gSprites
+_08131EB4: .4byte gTasks
+ thumb_func_end sub_8131944
+
+ thumb_func_start sub_8131EB8
+sub_8131EB8: @ 8131EB8
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x3C
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _08131ECA
+ cmp r0, 0x1
+ beq _08131F72
+ b _08131FF4
+_08131ECA:
+ ldr r0, _08131F50 @ =gBattleAnimArgs
+ movs r2, 0xE
+ ldrsh r1, [r0, r2]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _08131F64
+ movs r0, 0x3F
+ bl sub_8076F98
+ adds r1, r0, 0
+ lsls r1, 24
+ asrs r1, 24
+ movs r0, 0x7A
+ bl PlaySE12WithPanning
+ ldr r0, _08131F54 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ movs r1, 0x1
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r0, 0x10
+ strh r0, [r4, 0x22]
+ ldr r0, _08131F58 @ =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, _08131F5C @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08131FF4
+ bl IsContest
+ lsls r0, 24
+ cmp r0, 0
+ bne _08131FF4
+ movs r0, 0x1
+ bl obj_id_for_side_relative_to_move
+ ldr r2, _08131F60 @ =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 _08131FF4
+ .align 2, 0
+_08131F50: .4byte gBattleAnimArgs
+_08131F54: .4byte gBattleAnimEnemyMonIndex
+_08131F58: .4byte 0x0000ffe0
+_08131F5C: .4byte gBattleAnimPlayerMonIndex
+_08131F60: .4byte gSprites
+_08131F64:
+ adds r0, r4, 0
+ adds r0, 0x3E
+ ldrb r1, [r0]
+ movs r2, 0x4
+ orrs r1, r2
+ strb r1, [r0]
+ b _08131FF4
+_08131F72:
+ 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 _08131FA6
+ 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]
+_08131FA6:
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r2, 0
+ ldrh r1, [r4, 0x32]
+ adds r0, r1
+ strh r0, [r4, 0x32]
+ ldr r0, _08131FD0 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _08131FD4
+ 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 _08131FE0
+ .align 2, 0
+_08131FD0: .4byte gBattleAnimPlayerMonIndex
+_08131FD4:
+ ldrh r1, [r4, 0x32]
+ lsls r0, r1, 16
+ asrs r0, 24
+ ldrh r2, [r4, 0x24]
+ adds r0, r2
+ strh r0, [r4, 0x24]
+_08131FE0:
+ movs r0, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x32]
+ movs r1, 0x34
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x2
+ bne _08131FF4
+ adds r0, r4, 0
+ bl move_anim_8072740
+_08131FF4:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8131EB8
+
+ thumb_func_start sub_8131FFC
+sub_8131FFC: @ 8131FFC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r1, _08132024 @ =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 _08132018
+ b _0813216A
+_08132018:
+ lsls r0, 2
+ ldr r1, _08132028 @ =_0813202C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08132024: .4byte gTasks
+_08132028: .4byte _0813202C
+ .align 2, 0
+_0813202C:
+ .4byte _08132040
+ .4byte _08132090
+ .4byte _081320EC
+ .4byte _08132104
+ .4byte _0813216A
+_08132040:
+ ldr r0, _08132084 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ ldr r0, _08132088 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ adds r2, r0, 0
+ ldr r1, _0813208C @ =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 _08132076
+ negs r0, r0
+ strh r0, [r1, 0x8]
+_08132076:
+ strh r5, [r1, 0xA]
+ strh r2, [r1, 0xC]
+ ldrh r0, [r1, 0x26]
+ adds r0, 0x1
+ strh r0, [r1, 0x26]
+ b _08132188
+ .align 2, 0
+_08132084: .4byte gBattleAnimPlayerMonIndex
+_08132088: .4byte gBattleAnimEnemyMonIndex
+_0813208C: .4byte gTasks
+_08132090:
+ ldr r1, _081320CC @ =gObjectBankIDs
+ ldr r0, _081320D0 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, _081320D4 @ =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 _081320D8
+ 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 _0813215E
+ .align 2, 0
+_081320CC: .4byte gObjectBankIDs
+_081320D0: .4byte gBattleAnimPlayerMonIndex
+_081320D4: .4byte gSprites
+_081320D8:
+ 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 _08132188
+ b _08132162
+_081320EC:
+ 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 _08132188
+_08132104:
+ ldr r1, _08132144 @ =gObjectBankIDs
+ ldr r0, _08132148 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, _0813214C @ =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 _08132150
+ 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 _08132188
+ b _08132162
+ .align 2, 0
+_08132144: .4byte gObjectBankIDs
+_08132148: .4byte gBattleAnimPlayerMonIndex
+_0813214C: .4byte gSprites
+_08132150:
+ movs r3, 0x20
+ ldrsh r0, [r1, r3]
+ movs r3, 0x24
+ ldrsh r1, [r1, r3]
+ adds r0, r1
+ movs r3, 0xA
+ ldrsh r1, [r2, r3]
+_0813215E:
+ cmp r0, r1
+ blt _08132188
+_08132162:
+ ldrh r0, [r2, 0x26]
+ adds r0, 0x1
+ strh r0, [r2, 0x26]
+ b _08132188
+_0813216A:
+ ldr r1, _08132190 @ =gObjectBankIDs
+ ldr r0, _08132194 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r2, [r0]
+ ldr r1, _08132198 @ =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
+_08132188:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08132190: .4byte gObjectBankIDs
+_08132194: .4byte gBattleAnimPlayerMonIndex
+_08132198: .4byte gSprites
+ thumb_func_end sub_8131FFC
+
+ thumb_func_start sub_813219C
+sub_813219C: @ 813219C
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _08132204 @ =gTasks
+ adds r4, r1, r0
+ movs r0, 0
+ bl obj_id_for_side_relative_to_move
+ lsls r0, 24
+ lsrs r0, 24
+ movs r5, 0
+ strh r0, [r4, 0xE]
+ ldr r0, _08132208 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ movs r2, 0x1
+ negs r2, r2
+ adds r1, r2, 0
+ cmp r0, 0
+ bne _081321D0
+ movs r1, 0x1
+_081321D0:
+ strh r1, [r4, 0x10]
+ ldr r2, _0813220C @ =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, _08132210 @ =sub_8132214
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08132204: .4byte gTasks
+_08132208: .4byte gBattleAnimPlayerMonIndex
+_0813220C: .4byte gSprites
+_08132210: .4byte sub_8132214
+ thumb_func_end sub_813219C
+
+ thumb_func_start sub_8132214
+sub_8132214: @ 8132214
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r0, 3
+ ldr r1, _08132238 @ =gTasks
+ adds r4, r0, r1
+ movs r1, 0x8
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x1
+ beq _081322BC
+ cmp r0, 0x1
+ bgt _0813223C
+ cmp r0, 0
+ beq _08132242
+ b _08132312
+ .align 2, 0
+_08132238: .4byte gTasks
+_0813223C:
+ cmp r0, 0x2
+ beq _0813230C
+ b _08132312
+_08132242:
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x8
+ movs r2, 0xFF
+ ands r0, r2
+ strh r0, [r4, 0x1E]
+ ldr r5, _081322B4 @ =gSprites
+ movs r6, 0xE
+ ldrsh r0, [r4, r6]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r5
+ ldr r3, _081322B8 @ =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 _08132312
+ 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 _081322FC
+ .align 2, 0
+_081322B4: .4byte gSprites
+_081322B8: .4byte gSineTable
+_081322BC:
+ ldrh r0, [r4, 0x1E]
+ adds r0, 0x8
+ movs r1, 0xFF
+ ands r0, r1
+ strh r0, [r4, 0x1E]
+ ldr r3, _08132304 @ =gSprites
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ ldr r2, _08132308 @ =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 _08132312
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r3
+ strh r2, [r1, 0x24]
+_081322FC:
+ ldrh r0, [r4, 0x8]
+ adds r0, 0x1
+ strh r0, [r4, 0x8]
+ b _08132312
+ .align 2, 0
+_08132304: .4byte gSprites
+_08132308: .4byte gSineTable
+_0813230C:
+ adds r0, r2, 0
+ bl DestroyAnimVisualTask
+_08132312:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8132214
+
+ thumb_func_start sub_8132318
+sub_8132318: @ 8132318
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _0813236C @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ 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 _0813235E
+ adds r0, r4, 0
+ bl move_anim_8072740
+_0813235E:
+ ldrh r0, [r4, 0x32]
+ adds r0, 0x1
+ strh r0, [r4, 0x32]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0813236C: .4byte gBattleAnimEnemyMonIndex
+ thumb_func_end sub_8132318
+
+ thumb_func_start sub_8132370
+sub_8132370: @ 8132370
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _081323A8 @ =gBattleAnimEnemyMonIndex
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _081323B4
+ ldr r2, _081323AC @ =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, _081323B0 @ =0x0000fff5
+ strh r0, [r4, 0x2E]
+ movs r0, 0xC0
+ strh r0, [r4, 0x30]
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl StartSpriteAffineAnim
+ b _081323CE
+ .align 2, 0
+_081323A8: .4byte gBattleAnimEnemyMonIndex
+_081323AC: .4byte gBattleAnimArgs
+_081323B0: .4byte 0x0000fff5
+_081323B4:
+ movs r0, 0xB
+ strh r0, [r4, 0x2E]
+ movs r0, 0xC0
+ strh r0, [r4, 0x30]
+ ldr r1, _081323D8 @ =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]
+_081323CE:
+ ldr r0, _081323DC @ =sub_8132318
+ str r0, [r4, 0x1C]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081323D8: .4byte gBattleAnimArgs
+_081323DC: .4byte sub_8132318
+ thumb_func_end sub_8132370
+
+ thumb_func_start sub_81323E0
+sub_81323E0: @ 81323E0
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldr r4, _08132424 @ =gBattleAnimPlayerMonIndex
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_8077ABC
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5, 0x20]
+ ldrb r0, [r4]
+ movs r1, 0x2
+ bl sub_807A100
+ strh r0, [r5, 0x22]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xF
+ bgt _0813240A
+ movs r0, 0x10
+ strh r0, [r5, 0x22]
+_0813240A:
+ movs r0, 0
+ strh r0, [r5, 0x3A]
+ movs r1, 0x10
+ strh r1, [r5, 0x3C]
+ ldr r0, _08132428 @ =sub_8132430
+ str r0, [r5, 0x1C]
+ ldr r0, _0813242C @ =REG_BLDALPHA
+ lsls r1, 8
+ strh r1, [r0]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08132424: .4byte gBattleAnimPlayerMonIndex
+_08132428: .4byte sub_8132430
+_0813242C: .4byte REG_BLDALPHA
+ thumb_func_end sub_81323E0
+
+ thumb_func_start sub_8132430
+sub_8132430: @ 8132430
+ push {r4,lr}
+ adds r3, r0, 0
+ movs r0, 0x32
+ ldrsh r1, [r3, r0]
+ cmp r1, 0x1
+ beq _081324A8
+ cmp r1, 0x1
+ bgt _08132446
+ cmp r1, 0
+ beq _08132450
+ b _08132522
+_08132446:
+ cmp r1, 0x2
+ beq _081324BE
+ cmp r1, 0x3
+ beq _0813251C
+ b _08132522
+_08132450:
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _08132522
+ strh r1, [r3, 0x2E]
+ ldrh r1, [r3, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _0813247A
+ ldrh r2, [r3, 0x3A]
+ movs r4, 0x3A
+ ldrsh r0, [r3, r4]
+ cmp r0, 0xF
+ bgt _08132488
+ adds r0, r2, 0x1
+ strh r0, [r3, 0x3A]
+ b _08132488
+_0813247A:
+ ldrh r2, [r3, 0x3C]
+ movs r4, 0x3C
+ ldrsh r0, [r3, r4]
+ cmp r0, 0
+ beq _08132488
+ subs r0, r2, 0x1
+ strh r0, [r3, 0x3C]
+_08132488:
+ adds r0, r1, 0x1
+ strh r0, [r3, 0x30]
+ ldr r2, _081324A4 @ =REG_BLDALPHA
+ ldrh r0, [r3, 0x3C]
+ lsls r0, 8
+ ldrh r1, [r3, 0x3A]
+ orrs r0, r1
+ strh r0, [r2]
+ movs r1, 0x3C
+ ldrsh r0, [r3, r1]
+ cmp r0, 0
+ bne _08132522
+ b _08132510
+ .align 2, 0
+_081324A4: .4byte REG_BLDALPHA
+_081324A8:
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ movs r1, 0
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0xA
+ bne _08132522
+ strh r1, [r3, 0x2E]
+ strh r1, [r3, 0x30]
+ b _08132510
+_081324BE:
+ ldrh r0, [r3, 0x2E]
+ adds r0, 0x1
+ strh r0, [r3, 0x2E]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x1
+ ble _08132522
+ movs r0, 0
+ strh r0, [r3, 0x2E]
+ ldrh r1, [r3, 0x30]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ bne _081324EA
+ ldrh r2, [r3, 0x3A]
+ movs r4, 0x3A
+ ldrsh r0, [r3, r4]
+ cmp r0, 0
+ beq _081324F8
+ subs r0, r2, 0x1
+ strh r0, [r3, 0x3A]
+ b _081324F8
+_081324EA:
+ ldrh r2, [r3, 0x3C]
+ movs r4, 0x3C
+ ldrsh r0, [r3, r4]
+ cmp r0, 0xF
+ bgt _081324F8
+ adds r0, r2, 0x1
+ strh r0, [r3, 0x3C]
+_081324F8:
+ adds r0, r1, 0x1
+ strh r0, [r3, 0x30]
+ ldr r2, _08132518 @ =REG_BLDALPHA
+ ldrh r0, [r3, 0x3C]
+ lsls r0, 8
+ ldrh r1, [r3, 0x3A]
+ orrs r0, r1
+ strh r0, [r2]
+ movs r1, 0x3C
+ ldrsh r0, [r3, r1]
+ cmp r0, 0x10
+ bne _08132522
+_08132510:
+ ldrh r0, [r3, 0x32]
+ adds r0, 0x1
+ strh r0, [r3, 0x32]
+ b _08132522
+ .align 2, 0
+_08132518: .4byte REG_BLDALPHA
+_0813251C:
+ adds r0, r3, 0
+ bl move_anim_8074EE0
+_08132522:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8132430
+
+ thumb_func_start sub_8132528
+sub_8132528: @ 8132528
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ ldr r2, _08132544 @ =gBattleAnimArgs
+ movs r0, 0
+ strh r0, [r2, 0xE]
+ ldr r0, _08132548 @ =gWeatherMoveAnim
+ ldrh r1, [r0]
+ movs r0, 0x60
+ ands r0, r1
+ cmp r0, 0
+ beq _0813254C
+ movs r0, 0x1
+ b _0813256E
+ .align 2, 0
+_08132544: .4byte gBattleAnimArgs
+_08132548: .4byte gWeatherMoveAnim
+_0813254C:
+ movs r0, 0x7
+ ands r0, r1
+ cmp r0, 0
+ beq _08132558
+ movs r0, 0x2
+ b _0813256E
+_08132558:
+ movs r0, 0x18
+ ands r0, r1
+ cmp r0, 0
+ beq _08132564
+ movs r0, 0x3
+ b _0813256E
+_08132564:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08132570
+ movs r0, 0x4
+_0813256E:
+ strh r0, [r2, 0xE]
+_08132570:
+ adds r0, r3, 0
+ bl DestroyAnimVisualTask
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8132528
+
+ thumb_func_start sub_813257C
+sub_813257C: @ 813257C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _081325B4 @ =gTasks
+ adds r4, r0
+ movs r0, 0
+ strh r0, [r4, 0x8]
+ ldr r0, _081325B8 @ =gBattleAnimArgs
+ ldrb r0, [r0]
+ bl obj_id_for_side_relative_to_move
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ strh r1, [r4, 0x26]
+ ldr r2, _081325BC @ =gUnknown_08402B28
+ adds r0, r4, 0
+ bl sub_80798F4
+ ldr r0, _081325C0 @ =sub_81325C4
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_081325B4: .4byte gTasks
+_081325B8: .4byte gBattleAnimArgs
+_081325BC: .4byte gUnknown_08402B28
+_081325C0: .4byte sub_81325C4
+ thumb_func_end sub_813257C
+
+ thumb_func_start sub_81325C4
+sub_81325C4: @ 81325C4
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ ldr r2, _0813261C @ =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 _08132628
+ ldrh r0, [r3, 0xA]
+ adds r0, 0x1
+ strh r0, [r3, 0xA]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x2
+ ble _08132638
+ 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 _08132628
+ ldr r2, _08132620 @ =gSprites
+ movs r0, 0x26
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r1, _08132624 @ =0x0000ffff
+ strh r1, [r0, 0x24]
+ b _08132638
+ .align 2, 0
+_0813261C: .4byte gTasks
+_08132620: .4byte gSprites
+_08132624: .4byte 0x0000ffff
+_08132628:
+ ldr r2, _08132658 @ =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]
+_08132638:
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r6
+ bl sub_807992C
+ lsls r0, 24
+ cmp r0, 0
+ bne _08132650
+ adds r0, r4, 0
+ bl DestroyAnimVisualTask
+_08132650:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08132658: .4byte gSprites
+ thumb_func_end sub_81325C4
+
+ .align 2, 0 @ Don't pad with nop.